- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 Capybara(Selenium 驱动程序)访问网站上的某些页面。我只需单击数组中的每个项目,然后单击返回按钮。一切顺利,但每次经过一些迭代后它都会崩溃。这是代码:
all(:xpath, '//table[@class="griglia_bordata"]//tr[td]/td/a[1]').each do |a|
a_js_functions << a[:href]
end
a_js_functions.each do |js_for_model|
puts js_for_model
page.execute_script js_for_model
find(:xpath, "//a[text()='Check availability']").click
puts find(".testo_grande_blu_B").text
puts "--------------------------------------------"
find(:xpath, "//a[text()='Back']").click
end
我有输出:
javascript:selectModel('130254') Style: RB2132 -------------------------------------------- javascript:selectModel('309257') Style: RB2140 -------------------------------------------- javascript:selectModel('68238') Style: RB3016 -------------------------------------------- javascript:selectModel('68248') Style: RB3025 -------------------------------------------- javascript:selectModel('68293') Style: RB3026 -------------------------------------------- javascript:selectModel('68320') Style: RB3044 -------------------------------------------- javascript:selectModel('68460') /usr/lib/ruby/1.9.1/net/protocol.rb:146:in
rescue in rbuf_fill':
rbuf_fill' from /usr/lib/ruby/1.9.1/net/protocol.rb:122:in
Timeout::Error (Timeout::Error) from
/usr/lib/ruby/1.9.1/net/protocol.rb:140:inreaduntil' from
readline' from /usr/lib/ruby/1.9.1/net/http.rb:2562:in
/usr/lib/ruby/1.9.1/net/protocol.rb:132:inread_status_line' from
read_new' from /usr/lib/ruby/1.9.1/net/http.rb:1319:in
/usr/lib/ruby/1.9.1/net/http.rb:2551:inblock in transport_request'
catch' from /usr/lib/ruby/1.9.1/net/http.rb:1316:in
from /usr/lib/ruby/1.9.1/net/http.rb:1316:intransport_request' from
request' from /usr/lib/ruby/1.9.1/net/http.rb:1286:in
/usr/lib/ruby/1.9.1/net/http.rb:1293:inblock in request' from
start' from /usr/lib/ruby/1.9.1/net/http.rb:1284:in
/usr/lib/ruby/1.9.1/net/http.rb:745:inrequest' from
response_for' from /var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:38:in
/var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:82:in
request' from
call' from /var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:598:in
/var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:in
raw_execute' from
execute' from /var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:554:in
/var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:576:in
find_elements_by' from
find_elements' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/selenium/driver.rb:52:in
/var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/search_context.rb:62:in
find' from
find_in_base' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:137:in
/var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:158:in
block in first' from
each' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:136:in
/var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:136:in
first' from
block in find' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/base.rb:46:in
/var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:27:in
wait_until' from
find' from (eval):2:in
/var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:27:in
find' from
find' from /home/biske/workspace/ScrapingGlasses/lib/luxottica.rb:39:in
/var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/dsl.rb:161:in
block in
each' from /home/biske/workspace/ScrapingGlasses/lib/luxottica.rb:36:in
scrape' from
/home/biske/workspace/ScrapingGlasses/lib/luxottica.rb:36:inscrape' from
go' from /home/biske/workspace/ScrapingGlasses/lib/luxottica.rb:48:in `'
/home/biske/workspace/ScrapingGlasses/lib/luxottica.rb:12:in
最佳答案
我之前看到过类似的痕迹,以及它的 2 个潜在原因:
1) FakeWeb 和 WebMock 等 gems 修改了 ruby 的 http.尝试删除这些 gem 以及您可能用来模拟/阻止 Web 请求的任何类似的 gem。
2) 我曾在一个真正负载过重的系统中看到过这种超时随机发生的情况。实际上,这里的问题不是测试,而是系统及其上运行的内容。可以更改 http 库使用的超时并继续测试。
为 capybara 更新:(来自 http://selenium.googlecode.com/svn/wiki/RubyBindings.wiki)
Capybara.register_driver :selenium_extended_http_timeout do |app|
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 240
Capybara::Selenium::Driver.new(app,
:browser => :firefox,
:http_client => client,
:resynchronization_timeout => 60,
:resynchronize => true)
end
Capybara.javascript_driver = :selenium_extended_http_timeout
很有可能您不需要重新同步的东西。
在这两种情况下,这都与 selenium 如何进行某些内部通信有关。 JsonWire 协议(protocol)。
关于ruby -/usr/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill' : Timeout::Error (Timeout::Error),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12922029/
下面是activeresource.rb的全部内容: require 'active_resource' 谁能解释一下这其中的逻辑? 为什么不简单地让 activeresource.rb 包含 act
Neo4j.rb 中是否有针对 Rails 6 的开发?在一个新的 Rails 6(rc1) 项目中,如果我创建几个脚手架然后运行“rake neo4j:migrate:all”,我会收到一个错误,当
对此很陌生,所以我一直在尝试解决这个问题,但无法找到答案。 gem update --system 安装 rb-appscript 时出现以下错误。 gem install rb-appscript
我正在为涉及选中/取消选中框的场景编写步骤定义。在步骤定义中,我尝试使用 web_steps.rb 中的现有步骤。但是我收到错误:未定义的步骤:“我检查'评级'”。我必须做些什么才能让我的 myfea
为什么 Controller 命名为“users_controller.rb”而模型不命名为“user_model.rb”? 为什么有“application_controller.rb”但在view
我对 Ruby on Rails 完全陌生,正在运行以下命令$rails生成设备用户 我期望生成文件 _devise_create_users.rb 。但是它会生成文件 _add_devise_to_
我的 Rails 应用程序(在 Heroku 上运行)有一个暂存和生产环境。目前,我必须在每个文件中分别定义 staging.rb 和 production.rb 中的很多内容,例如: # Cod
我是 Rails 新手,并且对 ASP.net 有很好的了解。在 ASP.net Web 应用程序中,我有一个 web.config 来完成所有设置,但在 Rails 中,有几个配置文件,我现在想知道
预先感谢您的帮助。 我正在尝试在 env.rb 中创建变量 File_path =("#{File.dirname(__FILE__)}/../../features/TestData/Testdat
按照这里的例子: http://rspec.info 但是它失败了: kernel_require.rb:45:in `require': cannot load such file -- bowli
我在使用 Ruby 时遇到了一个我无法解释的奇怪问题。我有以下脚本,它抓取剪贴板中当前的任何代码,通过语法高亮器运行它,然后将新版本放回剪贴板: #!/usr/bin/ruby1.9.1 requir
假设我想通过表单将此代码嵌入到单独的 ruby.rb 文件中: print "Hello, Please enter a value:" var = gets.to_i if var == 1
我正在从“MongoDB in Action”一书中学习 Mongodb 和 ruby 我已经安装好 Mongodb 并设法在其上执行了许多命令。 我可能没有正确安装 ruby。 我正在使用 Ub
更多新手问题。 我知道,如果我在我的应用程序帮助程序中定义了一个方法,那么整个应用程序代码都可以使用它。 在我的应用程序助手中,我有: def primary_user_is_admin if c
尝试将此代码块授予 capistrano 的版本 3 但无济于事。一切都变了。任何人都可以帮助我在正确的轨道上进行转换吗? 旧版本 2 deploy.rb: #require 'new_relic/r
我正在第二次学习 Rails 教程。当我输入这个 rails generate integration_test static_pages 我得到 spec/rails_helper.rb 和 spe
请问这个env.rb错误是什么意思? root# rake db:migrate WARNING: Cucumber-rails required outside of env.rb. The re
我已经看到这个问题出现在许多不同的情况下,并希望获得在 StackOverflow 上修复/调试它的最佳实践。 今天早上我想到了一个现实世界的例子: expected announcement.rb
这是我在 StackOverflow 上的第一个问题,请耐心等待...... 当我在Listing 8.6中使用authentication_pages_spec.rb时我的测试通过了。然后我在'sp
有谁知道在 JRuby 中是如何处理 tempfile.rb 的。它在 Ruby 中,但不在 JRuby 中。 有人有任何想法吗? 干杯 埃夫 最佳答案 您仍然可以“要求'tempfile'”并且它会
我是一名优秀的程序员,十分优秀!