【发布时间】:2015-02-18 12:58:58
【问题描述】:
如何使用 watir webdriver 检查页面是否加载?
当我用谷歌搜索时,我发现很多人建议检查特定元素,该元素仅在页面加载后才会出现。这对我的要求没有帮助,因为当我更改列表框的值时会发生页面加载,并且不会将我带到新页面。此页面加载后,元素和大部分值保持不变。因此我需要 selenium RC 中的 waitForPage 之类的东西。
我的场景 1.一个页面有3个列表框(A,B,C) 2. 当我更改列表 A 中的值时,会发生页面加载(这将更新列表框 C 的值。这些值是动态的。) 3. 然后我必须更改列表框 B 中的值。
在上述场景中,如果我在第 2 步之后检查了 List B 元素,它表示该元素存在,但是在更改值时它会失败,说该元素不存在
$browser.frame.select_list(:id,"listA").select("aaa")
while !$browser.frame.select_list(:id,"listA").exists? && i<=20
sleep 1
i+=1
end
raise "Element not found" if i > 20
i=1
while !$browser.frame.select_list(:id,"listA").include?("bbb") && i<=20
sleep 1
i+=1
end
raise "Option not found" if i > 20
$browser.frame.select_list(:id,"listB").select("bbb")
在检查列表 B 中是否存在选项或更改列表 B 的值时,脚本因找不到元素异常而失败
【问题讨论】:
-
"2. 当我更改列表 A 中的值时,会发生页面加载" - 这是什么意思?是否有某种 ajax 请求?
-
没有 smooyk。这不是一个 ajax 请求。整个页面再次加载。这是一个使用 POST 方法提交的表单
-
好像更新List A会刷新页面来更新List C的选项,你有没有试过等到List C更新?该代码似乎只对列表 A 进行检查。
-
编辑您提出的错误中的文本,以消除两条消息的歧义,从而更清楚哪个步骤失败
标签: webdriver watir watir-webdriver