Webdriver没有这样的元素,当它确实存在,我已经等了足够长的时间了
Webdriver no such element when it does exist and I have waited long enough for it
我使用WebDriver不测试,但做日常的事情,如找出我的帐户余额。
在这样做的过程中,我有一些未找到的元素,我迭代遍历窗口并能够登录。
现在我已经登录了,我已经使用了按id查找、按xpath查找、按类查找和不查找对象来获取页面上的余额(至少我可以查看它,并且它是在firebug中)。我打印出了页面源代码,但页面源代码只有初始源代码,没有javascript修改。
我试图通过javascript获得body的内部html,它仍然给了我你从页面源获得的html。
是否有可能WebDriver不访问DOM?
我看到的所有帖子都说你必须等待足够长的时间,我有一个隐含的等待30秒。我倾向于认为这不是等待的问题。
当我使用firebug时,我看到了元素,这就是我获得xpath的方式。但是它不能用xpath找到它。
如果我能把源代码(由javascript生成)保存到一个所有元素都存在的文件中,我甚至会感到满意。
我在firefox和windows xp sp3中使用它。
我用下面的代码循环遍历iframeList <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());
我得到帧:0,它检测不到帧
您需要在try/catch中包装. finelement。在try catch子句中,使用循环,可以将隐式超时减少到5秒,并且可以重试,直到不再有异常。也许你会从我的帖子中得到一些灵感。
我知道我的问题是什么了。
我上面使用的代码将不起作用。它迭代帧,但不切换到它们。
- 我正在寻找iframe,但代码正在寻找的是在第二帧。我不是在寻找//frame
- 我必须切换到合适的帧。要做到这一点,我必须使用firepath为框架找到合适的xpath。
- AND在切换到一个帧之前,我必须先进入defaultcontent。
这就是为什么它找不到默认内容的原因。
selenium ide没有记录所需的框架和窗口切换,这太糟糕了。
我看到另一个答案也谈到了这一点如何使用Java在Selenium WebDriver中切换帧
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- Java脚本时间添加
- Json数据包含日期和时间格式
- 如何根据时间运行不同的脚本
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 在wordpress一定时间后更改自定义字段
- 用于检查数组中是否存在元素的javascript自定义方法
- 更改angularjs中的日期-时间格式
- 将当前时间添加到我的页面上的特定部分
- 存在每个时间元素的javascript事件
- MongoDB找到$value存在的位置和时间戳$gte JS
- 我的无引用 JavaScript 对象存在在哪里以及存在多长时间
- 检查类和id是否存在,然后更改h1,然后在时间限制后重定向页面
- 如何在用户提交每个新帖子时给它们加上时间戳(并将其保存在Firebase中)
- 检查类在javascript中的存在时间是否长于X
- Webdriver没有这样的元素,当它确实存在,我已经等了足够长的时间了
- 随着时间的推移,存在着越来越错误的火球