我試圖讓我的代碼(使用Watir開發的IE8)與watir-webdriver和IE9一起工作。 目前我有一個等待的問題。watir-webdriver IE9的等待方法
例如
Watir::Wait.until{browser.button(:value, "Login").exists?}
它不會等待,給我下一個錯誤
C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/remote/response.rb:50:in `assert_ok': Unable to find element with xpath == .//button[
text()='Login'] | .//input[@value='Login' and (@type='button' or @type='reset' or @type='submit' or @type='image')] (Selenium::WebDriver::Error::UnexpectedJavascriptError
)
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/remote/http/common.rb:58:in `new'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/remote/http/common.rb:58:in `create_response'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/remote/http/default.rb:64:in `request'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/remote/http/common.rb:39:in `call'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/remote/bridge.rb:450:in `raw_execute'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/remote/bridge.rb:428:in `execute'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/remote/bridge.rb:396:in `find_element_by'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/common/search_context.rb:41:in `find_element'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.3.9/lib/watir-webdriver/locators/element_locator.rb:86:in `find_first_by_multiple'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.3.9/lib/watir-webdriver/locators/element_locator.rb:33:in `locate'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.3.9/lib/watir-webdriver/elements/button.rb:53:in `locate'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.3.9/lib/watir-webdriver/elements/element.rb:259:in `assert_exists'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.3.9/lib/watir-webdriver/elements/element.rb:36:in `exists?'
from 1.rb:20:in `block in <main>'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.2/lib/selenium/webdriver/common/wait.rb:36:in `until'
from 1.rb:20:in `<main>'
試圖與IE8相同的腳本,並有同樣的問題。 當然,我可以用睡眠來解決它,但這不是一個好主意。 如果我在等待之前睡幾秒鐘,它可以正常工作。如果這立即引起您的測試服務器證書錯誤頁面後,使用「無效」(自簽名)證書,那麼你必須發生http://rubydoc.info/github/jarib/watir-webdriver/master/Watir/Element#wait_until_present-instance_method
這並沒有幫助,但我發現了這個問題。我的用例是next.I通過IE9轉到https服務器,並獲得證書錯誤頁面。爲了處理這個頁面,我使用了wscript命令,並且只需單擊tab來覆蓋鏈接。等待方法在覆蓋鏈接命令{enter}後進入正確的位置,在這種情況下它會發生切斷。如果在overridelink clicked Wait命令按預期工作後再次轉到此https服務器。順便說一句,這個代碼適用於FF和鉻沒有額外的執行命令。 –