簡體   English   中英

讓Watir等待所有第3方腳本加載完畢

[英]Getting Watir to wait until all 3rd party scripts have loaded

問題

由於更改了一些CSS以從Googlefonts中加載字體,我發現偶爾在本地運行時,我們的Watir測試會失敗,因為它們正在等待Googlefonts加載並且我們的連接已掛起或正在花費時間。

因為這是一個CSS加載問題,所以頁面的所有元素都可以訪問,所以我不能使用諸如wait_until_present之類的東西,因為這些東西存在了,但是Watir出於任何原因都不想玩它。

我不想更改我的資產管道以在本地測試時不加載這些內容,因為這違反了健全性測試的目的。

我嘗試過的

我試圖傳遞類似的東西;

browser.wait.until do
  window_loaded = browser.execute_script '$(window).load(function() { return true; });'
  window_loaded == true
end

但是我無法解決這個問題,而且我也不相信這將是解決此問題的正確方法。

摘自: http : //watirwebdriver.com/waiting/

require 'watir-webdriver'
b = Watir::Browser.start 'bit.ly/watir-webdriver-demo'
b.select_list(:id => 'entry_1').wait_until_present
b.text_field(:id => 'entry_0').when_present.set 'your name'
b.button(:value => 'Submit').click
b.button(:value => 'Submit').wait_while_present
Watir::Wait.until { b.text.include? 'Thank you' }

您還可以使用:

sleep 2

我個人使用sleep來等待所有內容加載完畢。 與AJAX一起使用時效果很好。

看到這個答案

begin
  Timeout::timeout(10) do
    # perform actions that may hang here
  end
rescue Timeout::Error => msg
  put "Recovered from Timeout"
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM