2015-01-15 61 views
0

Watir Webdriver有没有可用于等待新窗口选项卡加载的功能?等待窗口加载时不用等待存在的元素 - Watir Webdriver

现在发生的情况是,测试并没有等待标签页加载,我的脚本也因此失败。

我知道我可以等待网页中的某些元素可用。但我不想为每个网页做到这一点。 如果没有可用的方法,我想为我的框架中的库编写一个新的方法。

我是watir webdriver和ruby编程的新手。所以请帮我写一个库函数,如果不可用...

+0

是这样的Watir正在寻找的标签被打开之前或(2)的Watir正在寻找被创建之前它是异步加载的元件的问题(1)? – 2015-01-15 16:14:18

+0

@JustinKo我正在观察的是:测试不会等待页面加载。是的,甚至在页面加载之前,watir正在寻找一个元素。由于测试失败,由于对象没有找到或不可见或类似的东西。如果我在那里添加一些隐含的等待,它可以正常工作。所以肯定有一些问题。 – Sukuva 2015-01-15 16:31:36

回答

1

我可能会误解,但你的问题似乎说两种不同的东西。一方面,你说Watir不会等待页面加载。但后来你说你知道Watir 可以等待,但你不想在每一页上这样做。

根据我的经验,我可能会误解,如果Watir速度太快,页面没有加载,,您别无选择,但要Watir等待任何页面,这是一个问题。你还记得什么?

如果您的页面在30秒内加载,则可以使用.wait_until_present.when_present.(即Watir将在元素可用后立即移动,并在半分钟后超时)。

例如,如果您加载页面有文本“Hello”在div,可以使的Watir最多等待30秒,文本由

browser.div(:text, 'Hello').wait_until_present 

出现,然后让你的测试挑放在离开的地方。

或者,如果有(作为一个例子),ID为“buttonId”你要点击页面加载时,你可以的Watir等待30秒,直到按钮被加载并点击一个button

browser.button(:id, 'buttonId').when_present.click 

对于每个新页面加载,我几乎总是使用.wait_until_present.when_present.。在正常情况下,30秒足以让页面准备好Watir,并且这两种方法工作得很好。

参见http://watirwebdriver.com/waiting/

+0

我完全同意你提供的建议。我正在寻找的东西是这样的.. .wait_for_page_load()应等待完整的页面加载,而不是等待按钮或元素... – Sukuva 2015-01-21 17:18:05

+0

我们可以检查页面的就绪状态和状态,以便我可以停止等待,一旦它变成4和200 ..?这是为了等待页面加载功能。 – Sukuva 2015-01-23 14:41:27

+0

我不认为有可能用Watir-Webdriver检查页面状态。请参阅http://stackoverflow.com/questions/6509628/webdriver-get-http-response-code/6512785#6512785。您可以调查添加页面对象gem。我从来没有使用它,但该宝石可能能够检查是否加载页面。请参阅https://github.com/watir/watir-webdriver/wiki/Page-Objects。 – pjd 2015-01-24 06:28:19