ChromeDriver - getText使按钮在调试模式下单击

时间:2014-08-20 11:55:09

标签: java selenium selenium-chromedriver

我正在使用chromedriver并尝试找到弹出窗口中的按钮。

当我尝试使用xpath时,它只会在IE上返回它。

所以我尝试使用类名,然后循环所有按钮,找到文本“OK”的按钮。 我从b.getText()命令得到了异常“org.openqa.selenium.StaleElementReferenceException:陈旧元素引用:元素没有附加到页面文档” 我看到按钮被点击了。

    List<WebElement> all = Test1.driver.findElements(By
            .className("btn-primary"));

    for (WebElement b : all) {
        if (b.getText().trim().equals("OK")) {
            b.click();
            break;
        }
    }

1 个答案:

答案 0 :(得分:0)

我想,可能还有另一个'Ok'-button被chromedriver点击了? Chromedriver比IEdriver快,因此可能存在StaleElementReferenceException,即使Iedriver中没有Exception也是如此。 http://docs.seleniumhq.org/exceptions/stale_element_reference.jsp

我建议向后退一步。如果findElements与'By.className'一起使用,那么它也应该与'By.xpath'一起使用。你提到过,按钮是生成的,那么你是否已经使用了明确的或隐含的waitmethods? IEDriver可能足够慢,但chromedriver可能是快速的方式,所以chromedriver没有找到按钮,因为它根本不是在dom中喷射。 http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-and-implicit-waits

对于你的情况,我建议'visibilityOf' - 条件: https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html#visibilityOf(org.openqa.selenium.WebElement)

我希望这有帮助,如果没有,请不要犹豫,进一步询问。