我正在尝试通过selenium自动执行任务,删除一组数据库表 相应的代码是
WebElement element=null;
while((element = driver.findElement(By.name("db__button"))) != null){
driver.findElement(By.name("db__button")).click();
driver.findElement(By.name("ConfirmButton")).click();
}
但是我收到以下错误: -
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"name","selector":"db_vaults__button"}
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
只要数据库中有表,但只有表没有剩下的表,GUI就不会显示任何列表(这是正确的),并且db__button
不在页面上,因此{ {1}}失败
我想这个代码中缺少一些东西,试图在循环中删除一些表
堆栈跟踪中建议的链接没有任何信息
任何想法?
感谢。
答案 0 :(得分:2)
您可以执行以下提及的操作:
try {
element = driver.findElement(By.name("db__button"));
driver.findElement(By.name("db__button")).click();
driver.findElement(By.name("ConfirmButton")).click();
} catch (NoSuchElementException e) {
}
上面的代码将尝试找到你的按钮,如果找不到它会抛出异常。当找不到元素(db_button)时,你可以在catch块中编写代码(如果有的话)。
答案 1 :(得分:0)
有几种选择。我推荐这些。 创建一个方法或Web驱动程序扩展,如下所述。
var elements = driver.FindElements(by);
return (elements.Count >=1) ? elements.First() : null;