2017-09-26 102 views
0

我正在加载一个页面,然后单击该页面中的一个元素。目前我正在使用睡眠来点击它,但我觉得它不够强壮(也会在一段时间后消失)。Watir不会等待页面加载

on(page1).buttonForNextPage.click 
    @myvariable = on(page2).target_link_element.wait_until_present().link.text 

wait_until_present()似乎什么都没有实现。如果我不添加睡觉,代码只是通过比赛。只适用于睡眠(3),但我想避免这种情况。

此外,我正在使用pageobjects gem作为我的页面。

+0

当代码通过时,您看到的错误行为是什么? “@ myvariable”被设置为错误的值吗? –

+0

我得到的Selenium元素不存在代码。它无法找到target_link_element – qaispak

+0

您正在使用哪个版本的Page-Object和Watir?你还可以分享'target_link_element'的定义,理想情况下可以重现问题的页面? –

回答

2

您应该升级到最新版本的Watir,目前是v6.8.4。自v6.5.0以来,出现了一些解决您所看到的问题的错误修复程序。

+0

只是为了澄清。 Watir在默认进入下一页之前应等待页面加载,对吗? – qaispak

+1

是的,没有。点击提交表单的按钮/链接或开始导航时,底层驱动程序将等待页面加载完成。如果按钮/链接触发了一些JavaScript,这又导致浏览器刷新,则驱动程序不知道需要等待。但是,大多数Watir元素调用都会在采取行动/检查之前等待元素出现。总之,大多数情况下会等待,但有一些边缘情况。 –

+0

正如我的想法。 - 谢谢 – qaispak