标签: watir

使用watir-webdriver以全屏模式打开浏览器

我知道这是一个非常愚蠢的问题.然而,我无法找到如何使用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)

得到错误"未定义的方法最大化"

ruby watir watir-webdriver

8
推荐指数
3
解决办法
2万
查看次数

我如何获得Browser.text.include?不区分大小写?

就这么简单:

我怎样才能获得Browser.text.include?,或红宝石一般,是案件为指定的命令不敏感?

ruby watir watir-webdriver

8
推荐指数
2
解决办法
2810
查看次数

使用Watir关闭"确认导航"弹出窗口

我试图解雇"确认导航"弹出窗口.这就是它在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)

它工作得很好.我只是想知道是否有更好的解决方案.

javascript popup watir onbeforeunload watir-webdriver

8
推荐指数
1
解决办法
5804
查看次数

使无头浏览器停止加载页面

我正在使用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)

ruby webdriver watir watir-webdriver selenium-chromedriver

8
推荐指数
1
解决办法
3925
查看次数

检查是否显示"请输入电子邮件地址"消息

给出一个简单的页面:

<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页面中的错误条件?

selenium webdriver browser-automation watir watir-webdriver

8
推荐指数
2
解决办法
5976
查看次数

(Watir webdriver)在OSX 10.9中使用多个显示时,如何将浏览器移动到另一个屏幕

我知道有一个名为browser.window.move_to(0,0)的函数可以将浏览器移动到不同的位置,但OSX 10.9对它来说是全新的.

是否有任何方法可以将浏览器移动到另一个桌面?例如,在"桌面2"中触发命令的控制台,但我希望浏览器显示在"桌面1"中.

非常感谢!

ruby selenium watir watir-webdriver selenium-webdriver

8
推荐指数
1
解决办法
1083
查看次数

Watir应用程序部署到heroku

我正在尝试使用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)

ruby heroku watir sinatra phantomjs

8
推荐指数
1
解决办法
1879
查看次数

如何使用Watir和XPath访问元素

我有一些看起来像这样的HTML:

<h1 id="header">Header</h1>
Run Code Online (Sandbox Code Playgroud)

我想用Watir和XPath点击它.

xpath watir

7
推荐指数
3
解决办法
2万
查看次数

如何使用TeamCity在所有代理上安装Ruby gem?

我正在使用Teamcity 6.5.6,并寻找一种在构建代理上自动安装所需的ruby GEMS的方法.对于Ex:假设我在每个代理/远程(构建)机器上都需要两个宝石.例如:Watir和Selenium宝石.那么我想通过登录到这些机器来手动安装它们,或者我可以将它们保存在SVN中的公共库文件夹中,并在Teamcity中执行一些任务以在机器上不存在时安装它们.如果是这样,那么Teamcity中的任务是什么?

谢谢

ruby teamcity gem selenium watir

7
推荐指数
1
解决办法
744
查看次数

从网站保存图像(使用watir)

如何使用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)

ruby watir watir-webdriver

7
推荐指数
1
解决办法
1502
查看次数