0

問題

一部の CSS を Googlefonts からフォントを読み込むように変更して以来、Watir テストをローカルで実行すると、Googlefonts が読み込まれるのを待っていて、接続がハングしているか、接続に時間がかかっているため、Watir テストが失敗することがあることがわかりました。

これは CSS の読み込みの問題であるため、ページのすべての要素にアクセスできるため、何かwait_until_presentが存在するためなどは使用できませんが、何らかの理由で Watir はそれを操作したくありません。

ローカルでテストするときにこれらのものをロードしないようにアセット パイプラインを変更したくありません。それは健全性テストの目的に反するからです。

私が試したこと

私は次のようなものを渡そうとしました;

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

しかし、私はこれを機能させることができませんでした.とにかく、これがこの問題を解決する正しい方法であるとは確信していません.

4

2 に答える 2

1

出典: 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 で非常にうまく機能します。

于 2013-09-11T15:33:45.033 に答える
0

この回答を参照してください。

begin
  Timeout::timeout(10) do
    # perform actions that may hang here
  end
rescue Timeout::Error => msg
  put "Recovered from Timeout"
end
于 2016-07-03T15:38:07.717 に答える