Почему я получаю ошибку JavaScript после входа на веб-сайт с помощью Watir-Webdriver? - PullRequest
2 голосов
/ 21 февраля 2012

У меня есть прекрасная ошибка от Selenium Webdirver, которую я, кажется, не могу пройти, и надеялся, что кто-то здесь может получить какой-то совет.

Обзор

Я использую Ruby и Watir-Webdriver для управления браузером Firefox, чтобы систематически проверять наличие обновлений в MSDN, а затем выполнять некоторые автоматизированные задачи, если это необходимо. Я получаю сообщение об ошибке JS от веб-драйвера после входа на веб-сайт, и мой экземпляр браузера становится непригодным для использования. Всегда происходит в одном и том же месте, никогда не подводил в течение последних нескольких дней, когда я пытался это сделать.

Информация

Windows XP Pro SP3

ruby ​​1.9.3p0 (2011-10-30) [i386-mingw32]

селен-вебдрайвер (2.19.0)

watir-webdriver (0.5.3)

Сообщение об ошибке

irb(main):020:0> browser.goto "http://www.google.com"
Selenium::WebDriver::Error::UnknownError: '[JavaScript Error: "a is null" {file:"file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/webdriver-rb-profilecopy20120220-520-1q19c5x/extensions/fxdriver@googlecode.com/components/command_processor.js" line: 10092}]' when calling method: [nsICommandProcessor::execute]
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:590:in `raw_execute'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:568:in `execute'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:99:in `get'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/common/navigation.rb:14:in `to'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.5.3/lib/watir-webdriver/browser.rb:61:in `goto'
    from (irb):20
    from C:/Ruby193/bin/irb:12:in `<main>'

Мой сокращенный код Ruby

require 'watir-webdriver'
require 'win32ole'

browser = Watir::Browser.new :firefox, :profile => "default"
browser.goto "http://msdn.microsoft.com/en-us/"

ai = WIN32OLE.new("AutoItX3.Control")
browser.goto browser.link(:text => "Sign in").attribute_value('href')

browser.text_field(:name, "login").clear
browser.text_field(:name, "login").set "USERNAME"
browser.text_field(:name, "passwd").clear
browser.text_field(:name, "passwd").set "PASSWORD"

browser.button(:name, "LOGIN_BUTTON").click

# Secure to Non Secure page brings up a dialog, just send enter to dismiss
ai.winWaitActive("Security Warning", "", 15)
ai.Send("{ENTER}")

После этого момента, если я пытаюсь что-то сделать с экземпляром браузера, перейти на новый URL-адрес, проверить состояние и т. Д., Я получаю то же сообщение об ошибке от Selenium Webdriver.

browser.status -> Selenium :: WebDriver :: Error :: UnknownError: '[Ошибка JavaScript: "a is null" ...

browser.url -> Selenium :: WebDriver :: Error :: UnknownError: '[Ошибка JavaScript: "a is null" ...

browser.goto "http://www.google.com" -> Selenium :: WebDriver :: Error :: UnknownError: '[Ошибка JavaScript:" a is null "...

Я искал в Интернете что-то похожее, но до сих пор не могу найти хороший способ понять, почему это происходит. Я думаю, думаю, это как-то связано с перенаправлением с защищенной страницы login.live.com обратно на главную страницу MSDN, но это только предположение. Я могу использовать Webdriver с Ruby без каких-либо проблем, выполняя другие задачи, и делал это сегодня весь день. Единственный раз, когда я могу воспроизвести, это после входа в MSDN.

Этот компьютер был только что обновлен со всеми исправлениями и обновлениями, так что сейчас что-то играет не очень хорошо, но я просто не понимаю, что именно это может быть. Любой совет или помощь будет принята с благодарностью, спасибо.

...