我需要单击一个可能出现50%机会的按钮,并决定将try/catch
与findElementBy
一起使用。尽管如此,try/catch
无法正常工作,但我遇到了异常。也许有一种更有效的方法来处理该按钮?
driver.manage().timeouts().implicitlyWait(5000, TimeUnit.MILLISECONDS);
WebDriverWait wait = new WebDriverWait(driver,5);
try {
WebElement element = driver.findElement(By.xpath("buttonXpath"));
element.click();
}
catch (NoSuchElementException e){ }
答案 0 :(得分:0)
可能您看到的是 NoSuchElementException ,其原因可能很多。您可以在NoSuchElementException, Selenium unable to locate element
中找到详细的讨论最好的方法是按照下面的讨论在Locator Strategy中构造一个HTML DOM来唯一标识所需元素。
现在,根据最佳实践,在调用click()
时,总是使用try-catch{}
的{{1}}块来诱导 WebDriverWait ,如下所示:
elementToBeClickable()
答案 1 :(得分:0)
这将为您工作:
List<Webelement> element = driver.findElements(By.xpath("buttonXpath"));
if(element.size() > 0) {
element.get(0).click();
}
答案 2 :(得分:-2)
使用方法检查此元素是否在屏幕上:
if (!driver.findElementsByXPath("buttonXpath`enter code here`").isEmpty()) {
driver.findElementByXPath("buttonXpath`enter code here`").click();
}