我有一个这样的页面:
<input type="button" onclick="confirm('confirm popup');" value="click" />
Run Code Online (Sandbox Code Playgroud)
当我转到页面并单击链接时:
require "watir-webdriver"
browser = Watir::Browser.new
browser.goto "page.html"
browser.button.click
Run Code Online (Sandbox Code Playgroud)
确认弹出窗口出现.我可以解雇它:
require "watir-webdriver/extensions/alerts"
browser.confirm(true) {browser.button(:value => 'Confirm').click}
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
[remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/command_processor.js:10302:in `unknown': Modal dialog present (Selenium::WebDriver::Error::UnhandledAlertError)
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/dispatcher.js:85:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/dispatcher.js:516:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/dispatcher.js:351:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/webdriverserver.js:47:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/httpd.js:1935:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/httpd.js:2261:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/httpd.js:1168:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/httpd.js:1616:in `unknown' …
Run Code Online (Sandbox Code Playgroud) 是否可以在Windows上将ruby脚本编译为.exe?我到处搜索过,我尝试了以下内容(看起来像RubyScript2EXE,鞋子和箱子似乎都死了或被遗弃了.):
我在一个干净的系统上使用Windows 7旗舰版(64位)上的Ruby 1.8.7我这样做:
我有一个相当简单的脚本来执行此操作:
require 'rubygems'
require 'watir'
browser = Watir::Browser.new
browser.goto 'http://slashdot.org'
Run Code Online (Sandbox Code Playgroud)
当我运行Ocra时,我没有收到任何错误消息,也没有任何反应:
ocra --output test.exe test.rb
=== Loading script to check dependencies
Run Code Online (Sandbox Code Playgroud)
Exerb似乎是一个更好的解决方案,因为它编译为rbc,它确实做了一些事情:
ruby -r exerb/mkexy test.rb
# Window pops up and after I close it it writes out test.exy
C:\Users\jonathan\dev\Citation>exerb test.exy
C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:146:in `add_file_entry': test.
exy: no such file -- C:/Ruby187/lib/ruby/gems/1.8/gems/win32-api-1.4.8-x86-mingw32/lib/win32/ruby18/win32/api.so (RuntimeError)
from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:86:in `create_archive'
from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:85:in `each'
from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:85:in `create_archive'
from C:/Ruby187/bin/exerb.bat:67:in `main' …
Run Code Online (Sandbox Code Playgroud) 我在跑:
Chrome版本google-chrome-stable/unknown uptodate 27.0.1453.93-r200836
Debian GNU/Linux 6.0.6(挤压)32x
当我尝试运行时:
require 'watir-webdriver'
require 'headless'
headless = Headless.new
headless.start
b = Watir::Browser.new(:chrome)
Run Code Online (Sandbox Code Playgroud)
我明白了:
EOFError: end of file reached
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/protocol.rb:141:in `read_nonblock'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/protocol.rb:141:in `rbuf_fill'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:2563:in `read_status_line'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:2552:in `read_new'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:1320:in `block in transport_request'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:1317:in `catch'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:1317:in `transport_request'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:1294:in `request'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:1287:in `block in request'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:746:in `start'
from /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:1285:in `request'
from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/default.rb:83:in `response_for'
from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/default.rb:39:in `request'
from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:629:in `raw_execute' …
Run Code Online (Sandbox Code Playgroud) 从我读到的内容来看,我们似乎没有Firefox 4的JSSH,因此没有FireWatir.我有几个在FireWatir上运行良好的脚本,当然我想将我的Firefox更新到v4.我不想在不同的系统中重写我的所有脚本,因为这需要付出很多努力.我不喜欢切换到IE的想法; 主要原因是我可以设置Firefox将所有文件保存到特定目录,而我不能用IE做同样的事情.使用Firefox 4以最少的工作量运行所有FireWatir脚本的解决方案是什么?
我正在尝试滚动网页以查找并单击滚动页面时延迟加载的内容.我正在使用以下命令
require 'watir-webdriver'
@browser = Watir::new :firefox
@browser.send_keys :space
Run Code Online (Sandbox Code Playgroud)
我正在使用firefox的web驱动程序,我在ubuntu上,但它无法正常工作.在下面的ruby代码中,我试图向下滚动页面,直到我找不到带有:id的元素.该元素懒洋洋地加载.我几秒后就会超时,不知道下面的代码有什么问题.
When /^deal (\d+) is loaded$/ do |id|
(0..5).each do |click|
@browser.send_keys :space
end
end
Run Code Online (Sandbox Code Playgroud)
使用watir-driver滚动页面的最佳方法是什么?
可能听起来像一个新手问题(因为我是Ruby和IRB的新手)但有没有办法将您在IRB中执行的命令保存到文件中?我正在玩WATIR并希望将所有输入保存到文件中,而不是复制和粘贴每个.
谢谢您的帮助!
这个问题现在困扰我几天......每当我使用.bring_to_front方法时
require "rubygems"
require "watir"
browser = Watir::Browser::new
browser.bring_to_front
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
(...)rubygems/custom_require.rb:36:in `require': no such file to load -- ffi_c (LoadError)
Run Code Online (Sandbox Code Playgroud)
我尝试卸载并重新安装ffi/watir/ruby/netbeans但没有成功.
第36行在custom_require.rb中
def require path
if Gem.unresolved_deps.empty? or Gem.loaded_path? path then
gem_original_require path
else
spec = Gem.searcher.find_active path
unless spec then
found_specs = Gem.searcher.find_in_unresolved path
unless found_specs.empty? then
found_specs = [found_specs.last]
else
found_specs = Gem.searcher.find_in_unresolved_tree path
end
found_specs.each do |found_spec|
Gem.activate_spec found_spec
end
end
return gem_original_require path #problem
end
Run Code Online (Sandbox Code Playgroud)
*本地宝石*
archive-tar-minitar (0.5.2)
builder (3.0.0)
childprocess (0.2.2)
columnize (0.3.4)
commonwatir (2.0.4) …
Run Code Online (Sandbox Code Playgroud) 我开发了一个带有ruby watir-webdriver的爬虫,可以从页面下载一些文件.我的问题是,当我点击下载第二个文件时,Chrome会在顶部打开一个栏,要求确认我正在从此网站下载多个文件.
一旦webdriver使用它,我无法确认下载.反正有没有这个确认?我在想是否有任何配置可以避免它或者是否有扩展来执行此操作,或者即使我可以使用webdriver单击确认.
谢谢
google-chrome watir google-chrome-extension watir-webdriver selenium-chromedriver
我已经看到几天前在另一个线程中提到的以下问题和其他问题,但是这个问题的解决方案(对我来说)似乎没有得到解决.
我最近在我的Ruby 1.9.2-p290环境上运行了测试,当我运行测试脚本时出现以下错误:
You are using an old or stdlib version of json gem
Please upgrade to the recent version by adding this to your Gemfile:
gem 'json', '~> 1.7.7'
Run Code Online (Sandbox Code Playgroud)
当我创建一个在Windows XP上运行的全新Ruby 1.9.3-p392环境时,这个问题仍然存在(请不要问).令我困惑的是,即使我安装了json 1.7.7或1.8.0(宝石列表粘贴在下面),我仍然会在运行测试时收到此消息.它并没有真正影响我的测试结果,但每次看到这个警告都很烦人.
我需要将哪个Gemfile添加到其中,以及它将位于何处?
gem list:
bigdecimal (1.1.0)
childprocess (0.3.9)
commonwatir (4.0.0)
ffi (1.8.1 x86-mingw32)
io-console (0.4.2, 0.3)
json (1.8.0, 1.7.7, 1.5.5)
mini_portile (0.5.0)
minitest (5.0.0, 2.5.1)
multi_json (1.7.3)
rake (10.1.0.beta.3, 10.0.4, 0.9.2.2)
rdoc (4.0.1, 3.9.5)
rubygems-update (2.0.3)
rubyzip (0.9.9)
selenium-webdriver (2.32.1)
watir-webdriver (0.6.4)
websocket (1.0.7)
win32-api (1.4.8 x86-mingw32) …
Run Code Online (Sandbox Code Playgroud) 之前我把Chrome二进制文件"chromedriver.exe"放在"C:/ Windows"目录中,Watir从那里选择它.现在我必须将我的项目移动到另一台机器,因此我无法对可执行路径进行硬编码.我还希望二进制文件与Git上的代码保持一致,而不是让每个测试工程师在发布新版本时手动更新二进制文件.
现在我已经将Chrome二进制文件放在绝对路径上了,但是找不到它.这是我试过的(hooks.rb):
Before do
puts "inside hooks in before"
profile = Selenium::WebDriver::Chrome::Profile.new
profile['download.prompt_for_download'] = false
profile['download.default_directory'] = File.join(File.absolute_path('../..', File.dirname(__FILE__)),"browsers/chromedriver.exe")
@browser = Watir::Browser.new :chrome, :profile => profile
end
Run Code Online (Sandbox Code Playgroud)
输出是:
inside hooks in before
Selenium::WebDriver::Error::WebDriverError: Unable to find the chromedriver executable. Please download the server from http://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH. More info at http://code.google.com/p/selenium/wiki/ChromeDriver.
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/chrome/service.rb:21:in `executable_path'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/chrome/service.rb:34:in `default_service'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/chrome/bridge.rb:14:in `initialize'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/common/driver.rb:37:in `new'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/common/driver.rb:37:in `for'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver.rb:67:in `for'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.11/lib/watir-webdriver/browser.rb:46:in `initialize'
C:/Users/Admin/watircukepractice/test_puppies/features/support/hooks.rb:11:in `new'
C:/Users/Admin/watircukepractice/test_puppies/features/support/hooks.rb:11:in `Before'
Run Code Online (Sandbox Code Playgroud)
我在Windows 7上,使用Ruby版本1.9.3p551,我指的是教程http://watirwebdriver.com/chrome/.
如何告诉Watir(和Selenium-WebDriver)chromedriver.exe的位置?