我希望有人可以帮助我解决我在运行黄瓜测试时遇到的问题.
我收到以下错误:
Timeout::Error (Timeout::Error)
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill'
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1293:in `request'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:745:in `start'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1284:in `request'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:82:in `response_for'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:38:in `request'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:598:in `raw_execute'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:576:in `execute'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:242:in `getScreenshot'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:34:in `screenshot_as'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:18:in `block in save_screenshot'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:18:in `open'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:18:in `save_screenshot'
Run Code Online (Sandbox Code Playgroud)
有没有人知道是什么原因造成的?
在我的测试套件执行期间随机发生此错误.在套件中我会有150个场景,我看到这个错误发生在不同的阶段.例如,可能发生在方案50或方案100中.我通过Jenkins的rake文件或通过cmd窗口运行我的测试但是如果我使用任何一种方法都会发生错误.
我们这里的测试站点可能有点奇怪,而且这里有一个奇怪的超时,可能会有所期待.但是,一旦此错误开始发生,从测试中发生的所有其他测试发生错误将具有相同的问题.我的场景都不依赖于彼此.每个场景通常都以一个步骤开始I go to the homepage
- 在.rb
我已经@browser.cookies.clear
包含的文件中的这个步骤中,因此前一个场景中不应该剩下任何数据.
有没有其他人遇到这个,如果是这样你采取了什么步骤来排序它?
给出一个简单的页面:
<form>
<input type="email">
<button>click</button>
</form>
Run Code Online (Sandbox Code Playgroud)
如果我在非电子邮件的文本字段中输入任何内容并单击该按钮,Please enter an email address
则会显示消息.
有没有办法检查是否使用Selenium或Watir显示消息?据我所知,浏览器DOM中没有出现任何新内容.
由于页面使用的是构建在浏览器功能中的电子邮件检查,因此检查出现错误消息是否有意义?它与检查浏览器滚动条是否有效处于同一级别.我们不再检查Web应用程序,而是检查平台(浏览器).
此处关于SO的早期相关问题是:如何使用黄瓜测试HTML5页面中的错误条件?
我有一些看起来像这样的HTML:
<h1 id="header">Header</h1>
Run Code Online (Sandbox Code Playgroud)
我想用Watir和XPath点击它.
是否可以使用页面对象gem和capybara来自动化Ruby on Rails测试?当我在启动测试后尝试访问页面对象时,收到以下错误:
Unable to pick a platform for the provided browser (RuntimeError)
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为我认为我必须将capybara的浏览器实例传递给页面对象,不确定是否有其他人曾经尝试过这个.
ruby-on-rails capybara pageobjects page-object-gem selenium-webdriver
环境:Mac OS X 10.8.3,Ruby 2.0.0p0,selenium-webdriver 2.32.1,ChromeDriver 26.0.1383.0.
我想更改默认浏览器语言.我正在测试网站是否正确检测到浏览器语言并以该语言显示页面.
我能够将Firefox语言设置为德语:
require "selenium-webdriver"
profile = Selenium::WebDriver::Firefox::Profile.new
profile["intl.accept_languages"] = "de"
caps = Selenium::WebDriver::Remote::Capabilities.firefox(firefox_profile: profile)
caps.platform = "Linux"
caps.version = 20
driver = Selenium::WebDriver.for(
:remote,
url: "http://USERNAME:ACCESS-KEY@ondemand.saucelabs.com:80/wd/hub",
desired_capabilities: caps)
driver.navigate.to "http://sandbox.translatewiki.net/"
Run Code Online (Sandbox Code Playgroud)
我想使用Chrome(和其他浏览器,如果可能的话)做同样的事情.
我尝试过在Chrome中用德语打开页面的几件事情,但每次页面都以英文显示,而不是用德语显示.
require "selenium-webdriver"
profile = Selenium::WebDriver::Chrome::Profile.new
profile["intl.accept_languages"] = "de"
caps = Selenium::WebDriver::Remote::Capabilities.chrome(firefox_profile: profile)
caps.platform = "Linux"
caps.version = ""
driver = Selenium::WebDriver.for(
:remote,
url: "http://USERNAME:ACCESS-KEY@ondemand.saucelabs.com:80/wd/hub",
desired_capabilities: caps)
driver.navigate.to "http://sandbox.translatewiki.net/"
Run Code Online (Sandbox Code Playgroud)
如果我更改firefox_profile: profile
为profile: profile
或chrome_profile: profile
,则每次都会以英语(而不是德语)打开页面.
据我所知,在API文档中,仅 …
ruby selenium google-chrome selenium-chromedriver selenium-webdriver
是否可以在不安装Java的情况下使用Nightwatch.js?有官方的Selenium JavaScript绑定(WebDriverJS,selenium-webdriver).是否需要Java?
我试图多次运行黄瓜功能(即500次).有没有办法做到这一点,而不是每次都要输入相同的命令?我猜这可以用Rake完成吗?我不是使用耙子或黄瓜的专家.
非常感谢您的帮助.
谢谢
我的环境是:WindowXP,IE8,VS2008,WatiN-2.0.20
当我尝试执行以下代码时:
IE _browser = new IE();
_browser.GoTo(_url);
_browser.Eval("alert('hello!');");
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
信息:
"Access denied. (Exception of HRESULT: 0x80070005 (E_ACCESSDENIED))"
Run Code Online (Sandbox Code Playgroud)
资源:
"Microsoft.mshtml"
Run Code Online (Sandbox Code Playgroud)
部分StackTrace
in WatiN.Core.Native.InternetExplorer.IEUtils.RunScript(String scriptCode, String language, IHTMLWindow2 window)
in WatiN.Core.Native.InternetExplorer.IEDocument.RunScript(String scriptCode, String language)
in WatiN.Core.Document.RunScript(String scriptCode, String language)
in WatiN.Core.Document.RunScript(String javaScriptCode)
in WatiN.Core.Document.Eval(String javaScriptCode)
Run Code Online (Sandbox Code Playgroud)
我知道是关于提前问题,但我不知道如何解决它.关于这个问题的任何想法.
在Interface TakesScreenshot页面,我发现了这个:
捕获屏幕截图并将其存储在指定位置.对于扩展TakesScreenshot的WebDriver,这取决于浏览器的最大努力,以优先顺序返回以下内容: - 整个页面 - 当前窗口 - 当前帧的可见部分 - 包含浏览器的整个显示的屏幕截图
对于扩展TakesScreenshot的WebElement,这取决于浏览器的最大努力,以优先顺序返回以下内容: - HTML元素的整个内容 - HTML元素的可访问部分.
所以我想知道它应该支持截取webelement的截图,但是现在找不到任何与此支持相关的文档.不确定它是否真的支持.
有人知道更多细节吗?谢谢.
我很惊讶那里似乎没有太多讨论.
在Mechanize中,我可以轻松地从浏览器中读取整个cookie jar,将其存储到文件中,然后将其加载到以后的会话/运行中,然后再次加载该网站的页面.
如何用watir-webdriver做同样的事情?
UPDATE
现在用0.5.2 我确实看到了新的方法browser.cookies.to_hash
,可以将这个问题变成"如何使用例如.和?来实现.from_hash或类似的加载器"..clear
.add
但是,我特别热衷于使用之前版本(0.4.1)加载和保存所有cookie,我的服务器可能会暂时停留一段时间.通过Selenium司机可能吗?