#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()