findElement方法显示异常

时间:2019-12-11 11:56:53

标签: java selenium try-catch nosuchelementexception

我需要单击一个可能出现50%机会的按钮,并决定将try/catchfindElementBy一起使用。尽管如此,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){ }

3 个答案:

答案 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();
}