Watir-WebDriver关于交互式等待方法,告别一味sleep时代

Watir-WebDriver是用于ruby自动化测试的库。与其它溯源库相比,它易于学习和使用,主要支持Web应用程序测试(Watir)和Web服务测试(Webdriver)。在自动化测试中,等待是非常重要的一个环节,特别是在Web应用自动化测试中。因为我们不能保证应用程序的响应速度和网络速度不同。所以,等待成了不可避免和必要的环节。在本篇文章中,我将向大家介绍Watir-WebDriver中的交互式等待方法,让我们告别“一味sleep”的时代。

Watir-WebDriver中等待的方法主要是以下三种:

1.睡眠等待(Sleep)

2.静态等待(Static Wait)

3.交互式等待(Implicit and Explicit Wait)

在下方的案例中,我们将介绍如何使用以上三种方法。

1. 睡眠等待

顾名思义,这是最常见的一种等待方式。通过暂停代码执行指定的时间,来等待应用程序的响应,然后重新开始测试执行

```ruby

def test_sleeper

browser.goto("https://github.com/")

sleep(3)

browser.text_field(:name => "q").set("watir")

sleep(3)

browser.button(:value => "Search").click

end

```

这种方法的缺点是它会损耗时间,因为我们无法预测应用程序的响应时间。如果响应很快,那么一直等待就是毫无意义的浪费。

2. 静态等待

静态等待比睡眠等待方法稍微好一些。这种方法并没有暂停程序的执行。它相当于每一秒都询问应用程序是否响应了。如果响应了,则重新开始下一步操作,否则继续等待。不过,这种方法也有一些缺点。如果他一直等待,时间一长可能会导致应用程序超时。

```ruby

def test_static_wait

browser.goto("https://github.com/")

10.times do

break if browser.text_field(:name => "q").exists?

sleep(1)

end

browser.text_field(:name => "q").set("watir")

10.times do

break if browser.button(:value => "Search").exists?

sleep(1)

end

browser.button(:value => "Search").click

end

```

在这段代码中,我们设置了一个10次的循环,每次循环等待1秒钟。如果label名称为“q”的文本字段出现,执行下一步操作,否则继续等待。同样的,如果“Sign In”按钮出现,就点击该按钮,否则继续等待。

3. 交互式等待

交互式等待比前两个方法更加智能,因为它在应用程序响应后立即恢复代码,不会像前两种方法那样等待一个静态的时间。这就意味着它可以优化测试的执行速度,因为它的等待时间是动态的,这是由应用程序响应时间决定的。该方法又分为两种:隐式等待和显式等待。

隐式等待:

隐式等待是在定义了一个等待时间后,使测试等待该时间。期间,只要每0.5秒一检查,如果已经找到了元素,程序将继续执行。如果未找到,程序将继续等待,直到超时或元素找到。

```ruby

def test_implicit_wait

browser.goto("https://github.com/")

browser.text_field(:name => "q").when_present.set("watir")

browser.button(:value => "Search").click

end

```

在这段代码中,我们使用“when_present”方法来等待“q”标记的文本字段。如果元素未在5秒钟内找到,Watir-WebDriver将引入一个Timeout::Error并抛出一个用户友好的错误消息。

显式等待:

在显式等待中,我们可以指定一个等待条件来等待元素。直到等待条件满足或达到超时时间时程序才会继续执行。

```ruby

def test_explicit_wait

browser.goto("https://github.com/")

wait = Selenium::WebDriver::Wait.new(:timeout => 10)

element = wait.until { browser.text_field(:name => "q") }

element.set("watir")

end

```

在这段代码中,我们使用一个Selenium等待对象。我们设置等待时间为10秒钟。定义好等待对象和时间后,我们可以使用“until”方法指定要等待的条件。在此例中,我们想要等待“q”标定的文本字段。我们这里暂且忽略“set”方法,该方法是在找到该元素后用于设置文本字段的值的。

至此,我们介绍了通过Watir-WebDriver进行交互式等待的3种方法。在测试开发中,使用适当方法对于执行测试代码的速度非常关键。使用正确的等待技术不仅有助于提高测试代码的速度,还将确保测试结果的准确性和可靠性。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(75) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部