Трудно найти элемент, используя ID, XPATH и CSS - PullRequest
0 голосов
/ 19 сентября 2019

Невозможно найти элемент привязки, присутствующий внутри элемента li, с помощью веб-драйвера Selenium.

Для приведенной ниже структуры HTML DOM я не могу найти второй элемент li.Я в основном хочу найти его и выполнить операцию клика на нем, загрузив новую страницу с помощью Selenium Webdriver.

Попытался получить к нему доступ с помощью следующих методов:

id - docTab

xpath -.//div[@class='secondary-tabs']/ul/li[1]/a

xpath - //*[@id="docTab"]

xpath - /html/body/div[1]/main/div[2]/div/div/div[2]/div[1]/ul/li[2]/a

css - #docTab. tab__heading

css - li[id="docTab"]

Но всеэто приводит к ошибке «Невозможно найти элемент».Это происходит даже после включения методов driver.wait.

Структура DOM:

<div class="secondary-tabs">
 <ul class="tabs tabs--bordered">
    <li class="tab active second_tabs" id="textTab" tabdivid="textSecond"><a><div class="tab__heading" title="Text">Text</div></a></li>
    <li class="tab second_tabs" id="docTab" tabdivid="docSecond"><a><div class="tab__heading" title="File">Document</div></a></li>
    <li class="tab second_tabs" id="faqTab" tabdivid="faqSecond"><a><div class="tab__heading" title="FAQ" onclick="FAQ">FAQ</div></a></li>
 </ul>
</div>

Я ожидаю найти второй элемент li и выполнить событие click для него, используявеб-драйвер селена.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

Вы можете попробовать ниже данного селектора.

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='secondarytabs']//child::ul//child::li[@id='docTab' and tabdivid='docSecond']"))).click();
0 голосов
/ 19 сентября 2019

К click() на элементе с текстом как Документ вам нужно вызвать WebDriverWait для elementToBeClickable(), и вы можете использовать любое из следующих решений:

  • Java :

    • cssSelector :

      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.secondary-tabs>ul li#docTab[tabdivid='docSecond']"))).click();
      
    • xpath :

      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='secondary-tabs']/ul//li[@id='docTab' and @tabdivid='docSecond']"))).click();
      
...