java - Webdriver 确实存在时没有这样的元素,我已经等待了足够长的时间

标签 java javascript selenium webdriver

我使用 WebDriver 不是为了测试,而是为了做例行的事情,比如查明我的账户余额。

在这样做的过程中,我有一些未找到的元素,我遍历窗口并能够登录。

现在我已经登录了,我已经使用了按 id 查找、按 xpath 查找、按类查找但找不到对象来获取页面上的余额(至少我可以查看它并且它在 Firebug )。 我打印了页面源,但页面源只有初始源,没有 javascript 修改。

我试图通过正文的 javascript 获取内部 html,但它仍然为我提供了通过页面源代码获取的 html。

WebDriver 是否可能没有访问 DOM?

我看到的所有帖子都说你必须等待足够长的时间,而我隐含地等待了 30 秒。我倾向于认为这不是等待问题。

当我使用 firebug 时,我看到了元素,这就是我获得 xpath 的方式。但是用xpath找不到。

如果我能将源代码(由 javascript 生成)保存到所有元素都存在的文件中,我什至会感到满意。

我在 firefox 和 windows xp sp3 上使用它。

我用这段代码遍历 iframe

List <WebElement> framesList = driver.findElements(By.xpath("//iframe"));
for(WebElement frame:framesList){
    element = driver.findElement(By.className("account-balance"));
    String et= element.getText();
    System.out.println(et);
}

System.out.println("frames:" + framesList.size());

我得到 frames:0 它没有检测到任何帧。

最佳答案

您需要将 .findElement 包装在 try/catch 中。在 try catch 子句中,并使用循环,您可以将隐式超时减少到 5 秒,然后您可以重试,直到不再有异常为止。也许你会从my post here得到一些想法.

关于java - Webdriver 确实存在时没有这样的元素,我已经等待了足够长的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16490725/

相关文章:

java//解压报错:MALFORMED

java - 在 Heroku 中部署 Spring Angular2 应用程序时出错

javascript - 如何使 '.box' 响应以及其中的元素,如下拉按钮、文本等?

java - 带有 HTMLUnitDriver 的 Selenium 3.0.x

javascript - 如果我不知道 Selenium 中的 ID 是什么,如何单击已生成 ID 的元素

java - 如何处理 <p :fileUpload auto ="true"> with Selenium?

java - 以数据库为中心的 Java 应用程序的回归测试/测试自动化工具?

java - Android谷歌地图标记不断点击同一点

javascript - 在 Node.js 中使用 JS Promise 进行多个 mysql 调用

javascript - 如何在 ColdFusion CFC 的远程方法中使用/访问 SESSION 变量?