Как щелкнуть элемент Span?

#html #selenium #selenium-ide

Вопрос:

по какой-то причине следующий xpath не будет щелкать, когда я использую команду click в среде разработки selenium.Ссылка, по которой я пытаюсь перейти, называется «устройства». Как я могу заставить это нажать?

xpath=//div[2]/section/nav/div[3]/div/div/span

Вот полный код:

 lt;div title="Devices" class="asm-source-list-group-view"gt; lt;header role="heading" aria-hidden="true"gt;Deviceslt;/headergt; lt;divgt;lt;div role="link" aria-selected="true" title="Devices" class="asm-source-list-item-view cw-being-hovered"gt; lt;span class="title" aria-hidden="true"gt;Deviceslt;/spangt; lt;span class="count cw-hidden" aria-hidden="true"gt;0lt;/spangt;lt;/divgt;lt;div role="link" aria-selected="false" title="Assignment History" class="asm-source-list-item-view"gt; lt;span class="title" aria-hidden="true"gt;Assignment Historylt;/spangt; lt;span class="count cw-hidden" aria-hidden="true"gt;0lt;/spangt;lt;/divgt;lt;/divgt;lt;/divgt;  

Комментарии:

1. Этот код не является полным. Где находится первый /div, раздел или /nav?

Ответ №1:

Если вы получаете сообщение об ошибке, что этот элемент в данный момент не виден или что-то в этом роде, вы должны реализовать WebDriverWait его до тех пор, пока элемент не станет видимым.

Так что попробуйте это

 WebDriverWait wait = new WebDriverWait(driver, 10); WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class="asm-source-list-group-view"]/header/div[@class="asm-source-list-item-view cw-being-hovered"]/span"))); element.click();  

Когда вы даете Xpath, попробуйте также указать правильные имена классов.

 Xpath = //div[@class="asm-source-list-group-view"]/header/div[@class="asm-source-list-item-view cw-being-hovered"]/span  

Ответ №2:

Чтобы щелкнуть элемент, вы можете использовать следующий XPath:

 //div[@title="Devices"]//div[@title="Devices" and @class="asm-source-list-item-view cw-being-hovered"]//span  

Ответ №3:

Предполагая, что текстовые устройства уникальны, вы можете использовать, Xpath as //span[contains(text(),'Devices'] а затем нажать на это. он должен работать с driver.findElement(By.Xpath("//span[contains(text(),'Devices']").click();

Ответ №4:

Проверьте Xpath, который вы ей дали, если он уникален, если он есть, и он все еще хочет нажать, я предлагаю вам попробовать эти 3 способа нажать для меня, один из них всегда выполняет свою работу:

 Using Actions Lib :  WebElement elemCN = driver.findElement(By.xpath("your path"));  int widthCN = elemCN.getSize().getWidth();  act.moveToElement(elemCN).moveByOffset((widthCN / 2) - 2, 0).click().perform();  

Использование JS :

 JavascriptExecutor js = (JavascriptExecutor) driver; WebElement SubmitPaiement = driver.findElement(By.xpath("your path")); js.executeScript("arguments[0].click();", SubmitPaiement);  

И, наконец, нормальное .click()