Как перейти по ссылке, содержащей текст - PullRequest
0 голосов
/ 12 ноября 2019

Я хочу нажать на ссылку, которая содержит определенный текст. Я пытался использовать выражение X-Path, и это не работает. Приложение, которое я тестирую, является многостраничным приложением, поэтому я не уверен, сгенерирована ли новая страница.

HTML:

<a class="text-major ev-pick-this-event" href="/cgi-bin/ncommerce3/SEGetEventInfo?ticketCode=GS%3AAMTX%3AHUSKERS%3ASLP2%3A&amp;linkID=BQFN80-AMTX&amp;shopperContext=&amp;pc=&amp;caller=&amp;appCode=&amp;groupCode=SLP&amp;cgc=&amp;dataAccId=129&amp;locale=en_US&amp;siteId=ev_BQFN80-AMTX">HUSKERS - SLP2 - Ranges</a>

Что япробовал:

DislplayEventList.js

class DisplayEventListPage {
  async clickEventListLink(page) {
    const slp2ItemLink = await page.$x(
      '//a[contains(., "HUSKERS - SLP2 - Ranges")]'
    );
    await slp2ItemLink.click();
  }
}

module.exports = DisplayEventListPage;

navigate.test.js

const path = require("path");
const config = require("config");
const url = config.get("url");
const DisplayGroupListPage = require("../pageObjects/DisplayGroupList");
const DisplayEventListPage = require("../pageObjects/DisplayEventList");

let groupListPage = new DisplayGroupListPage();
let eventListPage = new DisplayEventListPage();

describe("Test Navigation", () => {
  beforeAll(async () => {
    await page.goto(url);
    await page.screenshot({ path: "groupListPage.png" });
    await groupListPage.clickGroupName(page);
    await page.screenshot({ path: "eventListPage.png" });
    await page.waitFor(3000);
    const pageURL = await page.url();
    console.log(pageURL);
    await eventListPage.clickEventListLink(page);
  });
  it('should be titled "evenue 1.5 | Online Ticket Office | HUSKERS - SLP2 - Ranges', async () => {
    await expect(page.title()).resolves.toMatch(
      "evenue 1.5 | Online Ticket Office | HUSKERS - SLP2 - Ranges"
    );
  });
});

Ошибка, которую я получаю:

TypeError: slp2ItemLink.click is not a function

1 Ответ

0 голосов
/ 12 ноября 2019

попробуй с содержит селектор:

setTimeout(()=>{
$("a:contains('HUSKERS - SLP2 - Ranges')").trigger("click");
console.log("go");
}
, 3000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="text-major ev-pick-this-event" href="/cgi-bin/ncommerce3/SEGetEventInfo?ticketCode=GS%3AAMTX%3AHUSKERS%3ASLP2%3A&amp;linkID=BQFN80-AMTX&amp;shopperContext=&amp;pc=&amp;caller=&amp;appCode=&amp;groupCode=SLP&amp;cgc=&amp;dataAccId=129&amp;locale=en_US&amp;siteId=ev_BQFN80-AMTX" target="_blank">HUSKERS - SLP2 - Ranges</a>

Примите во внимание, что сначала ваш пользователь должен взаимодействовать со страницей, иначе триггер клика будет проигнорирован.

...