在第一次调用visit时,WebMock和Selenium的组合会导致类型错误
Failure/Error: id['ELEMENT'] || id['element-6066-11e4-a52e-4f735466cecf']
TypeError:
no implicit conversion of String into Integer
# /selenium-webdriver-3.4.0/lib/selenium/webdriver/common/bridge_helper.rb:43:in `[]'
# /selenium-webdriver-3.4.0/lib/selenium/webdriver/common/bridge_helper.rb:43:in `element_id_from'
# /selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/bridge.rb:638:in `block in find_elements_by'
# /selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/bridge.rb:638:in `each'
# /selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/bridge.rb:638:in `map'
# /selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/bridge.rb:638:in `find_elements_by'
# /selenium-webdriver-3.4.0/lib/selenium/webdriver/common/search_context.rb:79:in `find_elements'
# /capybara-2.14.0/lib/capybara/selenium/driver.rb:86:in `find_xpath'
# /capybara-2.14.0/lib/capybara/node/base.rb:108:in `find_xpath'
# /capybara-2.14.0/lib/capybara/queries/selector_query.rb:135:in `block in resolve_for'
# /capybara-2.14.0/lib/capybara/node/base.rb:81:in `synchronize'
# /capybara-2.14.0/lib/capybara/queries/selector_query.rb:131:in `resolve_for'
# /capybara-2.14.0/lib/capybara/node/finders.rb:40:in `block in find'
# /capybara-2.14.0/lib/capybara/node/base.rb:85:in `synchronize'
# /capybara-2.14.0/lib/capybara/node/finders.rb:38:in `find'
# /capybara-2.14.0/lib/capybara/node/actions.rb:92:in `fill_in'
# /capybara-2.14.0/lib/capybara/session.rb:784:in `block (2 levels) in <class:Session>'
# /capybara-angular-0.2.5/lib/capybara/angular/dsl.rb:8:in `block (2 levels) in <module:DSL>'
# ./spec/features/assesment_picker_spec.rb:34:in `block (3 levels) in <top (required)>'但是,当我删除所有WebMock代码时,我的测试就会执行。我在我的WebMock异常中允许localhost,但是我的测试仍然无法执行。我不确定还需要做些什么才能让Selenium在使用WebMock的同时运行。此外,如果Selenium规范是第一个运行的,它们就会通过。
水豚设置
Capybara.configure do |config|
config.run_server = false
config.app_host = root_url #retrieved elsewhere
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome)
end
config.save_path = File.join Dir.pwd, 'tmp', 'capybara'
end
Capybara.default_driver = :chrome
Capybara.current_driver = Capybara.default_driver
Capybara.javascript_driver = Capybara.default_driver等级库辅助对象
require 'rspec/rails'
require 'rspec/autorun'
require 'factory_girl_rails'
require 'webmock/rspec'
WebMock.disable_net_connect!(allow_localhost: true, allow: [/browserstack.com/])
# Load support files
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
RSpec.configure do |config|
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = true
end
end从远程/桥接器中的find_elements返回的散列#find_elements_by
$ how
"css selector"
$ what
"a"
$ execute :find_elements, {}, {using: how, value: what}
{
"acceptSslCerts" => true,
"applicationCacheEnabled" => false,
"browserConnectionEnabled" => false,
"browserName" => "chrome",
"chrome" => {
"chromedriverVersion" => "2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b)",
"userDataDir" => "/var/folders/2h/ws89fb2s381c9_3fzy6f9gzm0000gn/T/.org.chromium.Chromium.RPWXqC"
},
"cssSelectorsEnabled" => true,
"databaseEnabled" => false,
"handlesAlerts" => true,
"hasTouchScreen" => false,
"javascriptEnabled" => true,
"locationContextEnabled" => true,
"mobileEmulationEnabled" => false,
"nativeEvents" => true,
"networkConnectionEnabled" => false,
"pageLoadStrategy" => "normal",
"platform" => "Mac OS X",
"rotatable" => false,
"takesHeapSnapshot" => true,
"takesScreenshot" => true,
"unexpectedAlertBehaviour" => "",
"version" => "57.0.2987.133",
"webStorageEnabled" => true
}工具
$ chromedriver -v
ChromeDriver 2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b)
$ bundle list selenium-webdriver
/Users/aaron/.rvm/gems/ruby-2.3.4/gems/selenium-webdriver-3.4.0发布于 2017-05-23 14:21:44
很可能您正在使用的selenium-webdriver与您正在使用的chromedriver版本不兼容。更新到最新的selenium-webdriver (我输入时为3.4.0)和chromedriver (2.29)。您可能还需要指示WebMock允许127.0.0.1上的连接用于selenium和chromedriver之间的通信,具体取决于您的配置。
发布于 2017-08-04 22:11:07
我总是为Browserstack和SauceLabs导入路缘模块,而不仅仅是在运行远程驱动程序的情况下。
https://stackoverflow.com/questions/44117487
复制相似问题