我知道这是一个非常愚蠢的问题.然而,我无法找到如何使用watir webdriver以全屏模式打开浏览器.我尝试使用maximize()但是徒劳无功.这是代码的样子:
require "rubygems"
require "watir-webdriver"
ff = Watir::Browser.new(:firefox)
ff.goto("http://google.com")
ff.maximize()
Run Code Online (Sandbox Code Playgroud)
得到错误"未定义的方法最大化"
就这么简单:
我怎样才能获得Browser.text.include?
,或红宝石一般,是案件为指定的命令不敏感?
我试图解雇"确认导航"弹出窗口.这就是它在Chrome中的样子.
要查看弹出窗口:
require "watir-webdriver"
browser = Watir::Browser.new
browser.goto "http://www.gravityforms.com/demo/wp-admin/admin.php?page=gf_new_form"
browser.text_field(:id => "user_login").set "demo"
browser.text_field(:id => "user_pass").set "demo"
browser.button(:id => "wp-submit").click
browser.refresh
Run Code Online (Sandbox Code Playgroud)
目前,onbeforeunload
当我访问该页面时,我会覆盖,如http://watirwebdriver.com/javascript-dialogs/所示
browser.execute_script("window.onbeforeunload = function() {};")
Run Code Online (Sandbox Code Playgroud)
所以,脚本现在看起来像这样:
require "watir-webdriver"
browser = Watir::Browser.new
browser.goto "http://www.gravityforms.com/demo/wp-admin/admin.php?page=gf_new_form"
browser.text_field(:id => "user_login").set "demo"
browser.text_field(:id => "user_pass").set "demo"
browser.button(:id => "wp-submit").click
browser.execute_script("window.onbeforeunload = function() {};")
browser.refresh
Run Code Online (Sandbox Code Playgroud)
它工作得很好.我只是想知道是否有更好的解决方案.
我正在使用watir-webdriver ruby gem.它启动浏览器(Chrome)并开始加载页面.页面加载太慢,watir-webdriver引发超时错误.如何让浏览器停止加载页面?
require 'watir-webdriver'
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 10
@browser = Watir::Browser.new :chrome, :http_client => client
sites = [
"http://google.com/",
"http://yahoo.com/",
"http://www.nst.com.my/", # => This is the SLOW site
"http://drupal.org/",
"http://www.msn.com/",
"http://stackoverflow.com/"
]
sites.each do |url|
begin
@browser.goto(url)
puts "Success #{url}"
rescue
puts "Timeout #{url}"
end
end
########## Execution result ##########
# Success http://google.com/
# Success http://yahoo.com/
# Timeout http://www.nst.com.my/
# Timeout http://drupal.org/
# Timeout http://www.msn.com/
# Timeout http://stackoverflow.com/
########## Expected result ##########
# Success http://google.com/
# Success …
Run Code Online (Sandbox Code Playgroud) 给出一个简单的页面:
<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页面中的错误条件?
我知道有一个名为browser.window.move_to(0,0)的函数可以将浏览器移动到不同的位置,但OSX 10.9对它来说是全新的.
是否有任何方法可以将浏览器移动到另一个桌面?例如,在"桌面2"中触发命令的控制台,但我希望浏览器显示在"桌面1"中.
非常感谢!
我正在尝试使用Watir webdriver将应用程序部署到Heroku.它在本地成功运行.根据这个问题的答案:你能在Heroku上部署Watir来生成HTML快照吗?如果是这样,怎么样?, 你能行的.我按照这个答案的步骤/sf/answers/1488716351/.我的app.rb看起来像这样:
require "sinatra"
require "rubygems"
require "shotgun"
require "rake"
require "watir"
get '/sending_out' do
browser = Watir::Browser.new :phantomjs
erb :index
end
Run Code Online (Sandbox Code Playgroud)
但是当使用这些日志部署到Heroku时它会崩溃:
2014-10-24T13:01:10.620468+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:32:in `launch'
2014-10-24T13:01:10.620465+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:35:in `block in launch'
2014-10-24T13:01:10.620480+00:00 app[web.1]: credits.rb:44:in `rencredit'
2014-10-24T13:01:10.620496+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1004:in `process_route'
2014-10-24T13:01:10.620510+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `block in invoke'
2014-10-24T13:01:10.620534+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:217:in `call'
2014-10-24T13:01:10.620590+00:00 app[web.1]: /app/vendor/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
2014-10-24T13:01:10.620460+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:60:in `execute'
2014-10-24T13:01:10.620475+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/watir-webdriver-0.6.11/lib/watir-webdriver/browser.rb:46:in `initialize'
2014-10-24T13:01:10.620491+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:966:in `block (2 levels) in route!'
2014-10-24T13:01:10.620506+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `invoke' …
Run Code Online (Sandbox Code Playgroud) 我有一些看起来像这样的HTML:
<h1 id="header">Header</h1>
Run Code Online (Sandbox Code Playgroud)
我想用Watir和XPath点击它.
我正在使用Teamcity 6.5.6,并寻找一种在构建代理上自动安装所需的ruby GEMS的方法.对于Ex:假设我在每个代理/远程(构建)机器上都需要两个宝石.例如:Watir和Selenium宝石.那么我想通过登录到这些机器来手动安装它们,或者我可以将它们保存在SVN中的公共库文件夹中,并在Teamcity中执行一些任务以在机器上不存在时安装它们.如果是这样,那么Teamcity中的任务是什么?
谢谢
如何使用watir保存网站图像,而无需使用open-uri或类似版本重新加载?
我:我不能用的原因
File.open(file_name, 'wb') do |f|
f.write open(img.src).read
end # file open
Run Code Online (Sandbox Code Playgroud)
是图像是在当前(登录)会话中生成的,只有一次,因此无法进行"外部"第二次访问.
II:
browser.images.save()
- 仅用于ie - 也没有帮助,它打开了保存对话框.所以它对自动化如此无用.
示例:http://wiki.openqa.org/display/WTR/Save+All+Images+on+a+Webpage
require 'watir'
browser = Watir::Browser.new :ie
browser.goto 'http://google.com'
idx = 0
browser.images.each do |x|
puts idx
idx += 1
location = 'c:\tmp\file-' + idx.to_s + '.jpg'
x.save(location)
end
Run Code Online (Sandbox Code Playgroud)
github来源:http://rubydoc.info/github/watir/watir-classic/Watir/Image
# File 'lib/watir-classic/image.rb', line 48
def save(path)
@container.goto(src)
begin
fill_save_image_dialog(path)
@container.document.execCommand("SaveAs")
ensure
@container.back
end
end
Run Code Online (Sandbox Code Playgroud)
我最好的想法是使用代理获取所有图像.但也许有一种"轮流方式".
环境:
# ruby 1.9.3p125 (2012-02-16) [i386-mingw32]
# …
Run Code Online (Sandbox Code Playgroud)