自从我开始开发测试以来,我一直在收到Timeout错误.起初我认为这与我的xpath的效率有关,但是在看到测试快速通过很多次后,我认为它与选择器无关.错误随机发生,并且通常在它发生时会在特征内多次发生.我需要修复或至少了解这个问题是什么.
步骤定义的示例:
When /^I navigate to "(.*)"$/ do |webpage|
navigate_to(webpage)
end
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Timeout::Error (Timeout::Error)
/usr/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill'
/usr/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
/usr/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
/usr/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
/usr/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
/usr/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
/usr/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
/usr/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
/usr/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
/usr/lib/ruby/1.9.1/net/http.rb:1293:in `request'
/usr/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
/usr/lib/ruby/1.9.1/net/http.rb:745:in `start'
/usr/lib/ruby/1.9.1/net/http.rb:1284:in `request'
./features/support/env.rb:88:in `block in get_page_url'
Run Code Online (Sandbox Code Playgroud)
env.rb:
require 'selenium-webdriver'
require 'rubygems'
require 'nokogiri'
require 'rspec'
require 'rspec/expectations'
require 'httpclient'
require 'fileutils.rb'
require 'pathname'
$driver = Selenium::WebDriver.for :ie
#accept_next_alert = true
$driver.manage.timeouts.implicit_wait = 300
$driver.manage.timeouts.script_timeout = 300 …Run Code Online (Sandbox Code Playgroud) 我正在使用红宝石黄瓜和selenium-webdriver来测试一个网站.我一直在指的是从selenium站点到编写测试的以下方法列表(在java中).尝试使用列出的许多方法时出错.
我的代码示例:
text_d = @driver.find_element(:id, "dateDropDown").GetText
Run Code Online (Sandbox Code Playgroud)
错误:
undefined method `GetText' for #<Selenium::WebDriver::Element:0x80d04988> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
我尝试过将GetText写成:
Get_Text get_text gettext
但仍然没有好处.我觉得我在这里犯了一个非常简单的错误......
像.click这样的方法也可以.
是否有可以在Ruby中使用的单独方法列表?到目前为止我发现的文档主要是Java.这是我的第一个自动化项目+第一次使用Ruby我很难弄清楚哪些信息对我正在做的事情有用.
我正在使用selenium-webdriver和ruby中的黄瓜自动化网站的测试用例.我需要每个功能以特定顺序运行并使用相同的浏览器窗口.Atm的每个功能都会创建一个新的窗口来运行测试.虽然在某些测试用例中需要这种行为 - 但在许多情况下并非如此.从我到目前为止的研究来看,似乎有关于在整个测试案例中是否可以用硒驱动相同浏览器窗口的混合答案.我遇到的大多数答案都是针对其他语言的,并且是针对浏览器特定的解决方法(我在测试IE时开发我的测试,但预计会在其他浏览器中运行这些测试).我在Ruby工作,从我所看到的,似乎我必须为该页面创建一个类?我很困惑为什么我必须这样做或如何帮助.
我的env.rb文件:
require 'selenium-webdriver'
require 'rubygems'
require 'nokogiri'
require 'rspec/expectations'
Before do
@driver ||= Selenium::WebDriver.for :ie
@accept_next_alert = true
@driver.manage.timeouts.implicit_wait = 30
@driver.manage.timeouts.script_timeout = 30
@verification_errors = []
end
After do
#@driver.quit
#@verification_errors.should == []
end
Run Code Online (Sandbox Code Playgroud)
到目前为止,我收集了一些有类似问题的人的信息:https : //code.google.com/p/selenium/issues/detail?id = 18 有没有办法将已运行的浏览器附加到java中的selenium webdriver ?
如果我的问题不明确,请问我问题.我有更多的测试要创建,但如果我的基础很草率并且缺少所请求的功能,我不想继续创建测试.(如果您发现我的代码中有任何其他问题,请在评论中指出)
我试图找到类"foo"的元素
<div id="foo1">
<div id = "foo2">
<div class = "foo">
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的xpath:
/div/div/div[contains(@class,'foo')]
Run Code Online (Sandbox Code Playgroud)
这是它发现的代码:
<div id="foo1">
<div id = "foo2">
<div class = "foo-err">
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
该路径返回div class ="foo-err"元素