2016-07-26 4 views
0

я пытался выполнить простой тест браузераWatir WebDriver не работает, как ожидалось

require 'rubygems' 
require 'watir-webdriver' 
b = Watir::Browser.new :firefox 
b.goto 'http://www.google.com/' 

браузер запущен и закрытые немедленно бросали следующую ошибку

c:/ruby22/lib/ruby/2.2.0/net/http/generic_request.rb:25:in `initialize': HTTP request path is empty (ArgumentError) 
    from c:/ruby22/lib/ruby/2.2.0/net/http/request.rb:14:in `initialize' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/default.rb:95:in `new' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/default.rb:95:in `new_request_for' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/default.rb:57:in `request' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/default.rb:88:in `request' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:59:in `call' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:649:in `raw_execute' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:123:in `create_session' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:87:in `initialize' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/bridge.rb:55:in `initialize' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:53:in `new' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:53:in `for' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver.rb:84:in `for' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/watir-webdriver-0.9.1/lib/watir-webdriver/browser.rb:46:in `initialize' 
    from test.rb:3:in `new' 
    from test.rb:3:in `<main>' 

запрос HTTP путь является пустым означает, что ? - вызывающие параметры, измененные в новых версиях watir?

Кто-нибудь сталкивался с подобной проблемой?

Моя система Windows 7 64 бит, я бегу за прокси-сервером, браузер уже настроен прокси

--- EDIT ---

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

c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:90:in `connect_until_stable': unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) (Selenium::WebDriver::Error::WebDriverError) 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:55:in `block in launch' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/socket_lock.rb:43:in `locked' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:51:in `launch' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/bridge.rb:43:in `initialize' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:53:in `new' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:53:in `for' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver.rb:84:in `for' 
    from c:/ruby22/lib/ruby/gems/2.2.0/gems/watir-webdriver-0.9.1/lib/watir-webdriver/browser.rb:46:in `initialize' 
    from test.rb:8:in `new' 
    from test.rb:8:in `<main>' 

--- EDIT ---

Я скачал geckodriverv0.10.0 из https://github.com/mozilla/geckodriver/releases и копию вставили geckodriver.exe в папку Firefox, а также добавил папку FireFox в PATH

Я установил selenium-webdriver бета-версию 3.0.0.beta2.1

Но все-таки я получение той же самой ошибки

c:/ruby22/lib/ruby/2.2.0/net/http/generic_request.rb:25:in `initialize': HTTP request path is empty (ArgumentError) 

Я также попытался установить версию ESR Firefox и добавил к PATH whi ч тоже не работает

--- EDIT ---

Я открыл файл C: /ruby22/lib/ruby/2.2.0/net/http/generic_request.rb

и ввел оператор печати следующего

print "\n" 
print uri_or_path 

if URI === uri_or_path then 
    print "\ncoming to if part\n" 
    @uri = uri_or_path.dup 
    host = @uri.hostname.dup 
    host << ":".freeze << @uri.port.to_s if @uri.port != @uri.default_port 
    @path = uri_or_path.request_uri 
    raise ArgumentError, "no HTTP request path given" unless @path 
else 
    print "\ncoming to else part\n" 
    @uri = nil 
    host = nil 
    raise ArgumentError, "no HTTP request path given" unless uri_or_path 
    raise ArgumentError, "HTTP request path is empty" if uri_or_path.empty? 
    @path = uri_or_path.dup 
end 

и я получил ниже выходные

/session 
coming to else part 


coming to else part 

/shutdown 
coming to else part 
c:/ruby22/lib/ruby/2.2.0/net/http/generic_request.rb:29:in `initialize': HTTP request path is empty (ArgumentError) 
+0

Попробуйте 'http: // www.google.com /' (включить трейлинг-косую черту). – Casper

+0

http://stackoverflow.com/a/17709024/823617 – Casper

+0

получить новую ошибку сейчас –

ответ

0

Попробуйте ввести эти команды в IRB, линию за раз. что станет более ясным, где происходит сбой

Ваша первоначальная ошибка указала, что она не работает в строке 3, где в вашем коде выше, где он пытается создать новый экземпляр объекта браузера (который также запускает firefox и затем пытается связать объект браузера с фактическим браузером). Если это не работает, это обычно происходит потому, что вы не используете версию webdriver, которая поддерживает ваш браузер. Возможно, у вас есть новый firefox, и вам нужно обновить webdriver.

Иногда появляется небольшое окно после выхода нового FF (каждые 6 недель), которое ввело нарушение, в котором у нас нет обновленного gem-сервера, который поддерживает эту версию.

0

Скорее всего, вы видели это из-за ошибки в Firefox 47.0. Вам необходимо обновить до Firefox 47.0.1, чтобы он работал с Selenium 2.53.4.

+0

Я попробовал обновить firefox, но, думаю, что-то еще происходит –

+0

Да, Firefox 48+ требует, чтобы geckodriver работал. Вы можете понизить до 47.0.1 или использовать Firefox ESR - https://www.mozilla.org/en-US/firefox/organizations/ – titusfortner

+0

Я не использую 48+ Я использую только 47.0.1 –

Смежные вопросы