【问题标题】:selenium error: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"name","selector":"db_vaults__button"}硒错误:org.openqa.selenium.NoSuchElementException:无法找到元素:{“method”:“name”,“selector”:“db_vaults__button”}
【发布时间】:2011-08-16 05:08:06
【问题描述】:

我正在尝试通过 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: @987654321@_such_element.html

只要数据库中有表,它就可以正常运行,但是当没有表时,GUI 不会显示任何列表(正确)并且页面上不存在db__button,因此By.name("db__button")失败了。
我想这段代码中缺少一些东西,它试图在循环中删除一些表。
堆栈跟踪中的建议链接没有任何信息。
有什么想法吗?

谢谢。

【问题讨论】:

    标签: java selenium junit


    【解决方案1】:

    您可以执行如下所述的操作:

    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块中编写代码(如果有的话)。

    【讨论】:

    【解决方案2】:

    有多种选择。我推荐这些。 如下创建一个方法或 Web 驱动程序扩展并使用它。

        var elements = driver.FindElements(by);
        return (elements.Count >=1) ? elements.First() : null;
    
    

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 2019-08-11
      • 1970-01-01
      • 2018-04-09
      • 1970-01-01
      相关资源
      最近更新 更多