2012-02-16 1 views
1

Есть очень досадная проблема с Watir WebDriver ..Watir/Селен - browser.goto продолжают получать ошибку TimeOut на Chrome и Firefox

Я немного отлажена, и узнал, что я всегда получаю TimeOut :: Ошибка на simple @ browser.goto, даже я могу визуально видеть, что страница полностью загрузилась ...

Сценарий выглядит так: Открыть браузер, перейти к URL-адресу, нажать несколько ссылок, а затем внезапно в какой-то момент , скрипт прекращает просмотр, ожидая около 30 секунд и бросая ошибки. Пробовал как Chrome, так и FF: Chrome намного хуже, обычно срабатывает нажатие 2-го или 3-го канала; для FF, иногда занимает 10+ Страница просмотра ...

Bet есть некоторая среда или сопоставимость вопрос:

[email protected]:~$ uname -am 
Linux deskbox 3.0.0-12-generiC#20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux 
[email protected]:~$ ruby -v 
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] 
[email protected]:~$ rails -v 
Rails 3.2.1 
[email protected]:~$ gem -v 
1.8.15 
[email protected]:~$ gem list|grep webdriver 
selenium-webdriver (2.12.0) 
watir-webdriver (0.5.3) 

Может кто-то помочь в этом? Исходный код здесь:

#!/usr/bin/env ruby 
require 'watir-webdriver' 
require 'pry' 

class Search 
    attr_accessor :browser, :company_url, :company_name 

    def initialize() 
     @browser = Watir::Browser.start 'http://www.google.com', :chrome 
    end 

    def visit_company_home_via_google(company) 
     @company_name = company 
     @browser.goto "http://www.google.com/search?q=#{company}" 
     link = @browser.div(:id=>'ires').link 
     return nil unless link.exists? 
     @browser.goto link.href 
     @company_url ||= @browser.url 
     @company_url 
    end 


    def logoff() 
     @browser.close if @browser 
    end 

end 
s = Search.new 
puts s.visit_company_home_via_google("github") 
puts s.visit_company_home_via_google("Mashable") 
puts s.visit_company_home_via_google("Barracuda Networks") 
s.logoff 

Мой результат похож:

[email protected]:~/cuda$ ./search.rb 
https://github.com/ 
/usr/local/lib/ruby/1.9.1/net/protocol.rb:140:in `rescue in rbuf_fill': Timeout::Error (Timeout::Error) 
    from /usr/local/lib/ruby/1.9.1/net/protocol.rb:134:in `rbuf_fill' 
    from /usr/local/lib/ruby/1.9.1/net/protocol.rb:116:in `readuntil' 
    from /usr/local/lib/ruby/1.9.1/net/protocol.rb:126:in `readline' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:2219:in `read_status_line' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:2208:in `read_new' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:1191:in `transport_request' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:1177:in `request' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:1170:in `block in request' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:627:in `start' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:1168:in `request' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.0/lib/selenium/webdriver/remote/http/default.rb:81:in `response_for' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.0/lib/selenium/webdriver/remote/http/default.rb:43:in `request' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.0/lib/selenium/webdriver/remote/http/common.rb:39:in `call' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.0/lib/selenium/webdriver/remote/bridge.rb:450:in `raw_execute' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.0/lib/selenium/webdriver/remote/bridge.rb:428:in `execute' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.0/lib/selenium/webdriver/remote/bridge.rb:99:in `get' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.12.0/lib/selenium/webdriver/common/navigation.rb:14:in `to' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.5.3/lib/watir-webdriver/browser.rb:61:in `goto' 
    from ./search.rb:17:in `visit_company_home_via_google' 
    from ./search.rb:33:in `<main>' 

ответ

1

Я думаю, что есть ошибка в Chromedriver, что не возвращает URL правильно. Я получил ваш пример для работы, используя:

require 'watir-webdriver' 

class Search 
    attr_accessor :browser, :company_name 

    def initialize 
    @browser = Watir::Browser.start 'http://www.google.com', :chrome 
    end 

    def get_company_url(company, url=nil) 
    @company_name = company 
    @company_url = url 
    @browser.goto "http://www.google.com/search?q=#{company}" 
    link = @browser.div(:id=>'ires').link 
    return nil unless link.exists? 
    @company_url ||= @browser.driver.current_url 
    end 

    def logoff() 
    @browser.close if @browser 
    end 

end 

s = Search.new 
puts s.get_company_url 'Barracuda Networks' 
+0

Спасибо, извините, мой вопрос был не очень ясен; Моя цель состояла в том, чтобы не получить эти URL-адреса, но на самом деле попросить ватир перейти на страницу, посетить ее и вернуться; Прямо сейчас, GitHub в порядке; но и Mashable и Barracuda Networks заморожены при просмотре ...; Может ли кто-нибудь из вас попробовать его в той же среде, если это случится. Я пробовал с другой машиной на EC2, получил ту же проблему ... вот почему я спрашиваю здесь ... –

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