- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
运行以下代码时出现“无法定位元素”异常。我的预期输出是 GoogleResults 第一页
。
public static void main(String[] args) {
WebDriver driver;
driver = new FirefoxDriver();
driver.get("http://www.google.com");
driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
WebElement oSearchField = driver.findElement(By.name("q"));
oSearchField.sendKeys("Selenium");
WebElement oButton = driver.findElement(By.name("btnG"));
oButton.click();
//String oNext = "//td[@class='b navend']/a[@id='pnnext']";
WebElement oPrevious;
oPrevious = driver.findElement(By.xpath("//td[@class='b navend']/a[@id='pnprev']"));
if (!oPrevious.isDisplayed()){
System.out.println("First Page of GoogleResults");
}
}
如果我运行上面的代码,我会收到“无法定位元素异常”。我知道上一个按钮元素不在 Google 搜索结果页面的第一页中,但我想抑制异常并获取下一步 if
条件的输出。
最佳答案
逻辑错误-
oPrevious = driver.findElement(By.xpath("//td[@class='b navend']/a[@id='pnprev']"));
如果 WebDriver 无法找到该元素,将会失败或给出错误。
尝试使用类似 -
public boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
您可以将 xpath 传递给函数,例如
boolean x = isElementPresent(By.xpath("//td[@class='b navend']/a[@id='pnprev']"));
if (!x){
System.out.println("First Page of GoogleResults");
}
关于java - WebDriver "Unable to locate element"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12071977/
我是一名优秀的程序员,十分优秀!