因此,我们在页面中有以下代码:
<div class="toggle-wrapper">
<input id="HasRegistration_true" class="registration_required toggle" type="radio" value="True" name="HasRegistration" data-val-required="The HasRegistration field is required." data-val="true">
<label for="HasRegistration_true" class="">On</label>
<input id="HasRegistration_false" class="registration_required toggle" type="radio" value="False" name="HasRegistration" checked="checked">
<label class="checked" for="HasRegistration_false">Off</label>
</div>
Run Code Online (Sandbox Code Playgroud)
这是2个单选按钮.'开和关'.'关'是默认值.
使用Watir-webdriver和Ruby,我们想要选择'On'单选按钮.我们这样做:
browser.radio(:id => "HasRegistration_true").set
Run Code Online (Sandbox Code Playgroud)
但是这样做会导致以下错误:
`WebElement.clickElement': Element cannot be scrolled into view:[object HTMLInputElement] (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)
Run Code Online (Sandbox Code Playgroud)
我们知道Selenium 2将页面滚动到元素,因此尝试向下滚动是没用的.我们总是使用最新版本的watir-webdriver和ruby.
由于我们是QA工程师,因此我们无法更改页面的HTML.
我已经安装了Ruby 2,devkit和Watir.我收到以下错误.有谁可以帮我解决这个问题?
C:\devkit>irb
DL is deprecated, please use Fiddle
irb(main):001:0> require "watir"
=> true
irb(main):002:0> browser = Watir::Browser.new
LoadError: cannot load such file -- watir-classic
from C:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from C:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in`require'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-4.0.2/lib/watir/loader.rb:48:in `load_driver'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-4.0.2/lib/watir/loader.rb:40:in `load_driver_for'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-4.0.2/lib/watir/loader.rb:8:in `new'
from (irb):2
from C:/Ruby200/bin/irb:12:in `<main>'
irb(main):003:0>
Run Code Online (Sandbox Code Playgroud) 我有一个嵌套的<div>:
<div id="international-map">
<div id='a'>
<a> link a1 </a>
<a> link a2 </a>
<a> link a3 </a>
</div>
<div id='b'>
<a> link b1 </a>
<a> link b2 </a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如何获得"国际地图"下的所有链接?
我尝试了两种方法并且失败了:(
div= @driver.find_element(:id => 'international-map')e=@driver.find_elements(:xpath => "//div[@id='international-map']//div[@tag_name='a']")谢谢(甚至C#和Java代码帮助)
有没有办法用Watir Webdriver从浏览器中获取页面大小(以字节为单位)?我需要为每个页面记录它(我对整体总和感兴趣,而不是每个对象的详细信息),因此保存到文件并获取文件大小不是一个合适的方法.
我可以使用不同的浏览器,但更喜欢Firefox,
我正在尝试使用ruby脚本进行一些无头测试.基本上我在显示器上执行Xvfb:1,然后Watir::Browser.new(:firefox)使用watir-webdriver启动.
如果以root身份运行脚本,这很有用 - 我可以运行x11vnc并观察脚本执行浏览器并与之交互.
问题是,我需要能够从Rails应用程序调用这个ruby脚本,而不是以root身份运行它...如果我尝试以普通用户的身份从命令行运行脚本,Xvfb会启动:1像往常一样,Watir不会启动浏览器......它最终会在60秒后超时.通过VNC连接显示带有鼠标光标的黑屏.
我可以从命令行中完成所有操作 - 启动Xvfb,然后启动firefox --display=:1并启动浏览器,因此它必须是Selenium问题,对吧?
Nutshell:Selenium/Webdriver拒绝在Xvfb中启动浏览器,除非我以root身份运行脚本.
我目前在我的User班级中有这个方法:
def self.authenticate(email, password)
user = User.find_by_email(email)
(user && user.has_password?(password)) ? user : nil
end
Run Code Online (Sandbox Code Playgroud)
我如何对此运行 rspec 测试?
我试图运行it { responds_to(:authenticate) },但我认为 self 事物与身份验证不同。
我仍然是 Rails 的初学者,任何有关如何测试和解释self关键字的提示将不胜感激!
我在这里做一个Ruby教程:http: //rubymonk.com/learning/books/4-ruby-primer-ascent/chapters/45-more-classes/lessons/105-equality_of_objects
它说当我重载==运算符时我也应该重载eql?方法和哈希方法,因为它们"更快".
但是,如果我用基本相同的方法重载所有三个,那么一个比另一个快?
如何在Facebook中自定义登录按钮?我不想使用Facebook默认登录按钮.
直到今天,我一直在使用 chromedriver 来驱动我的 watir-webdriver 测试,并且没有遇到任何问题。我的服务器仍然可以工作,并在相同版本的 chromedriver 和 chrome 上运行测试。
我尝试更新到最新的 chromedriver,即 chromedriver 2 实验版本。由于我只能假设仍在解决其中的错误,因此失败了。我也尝试回滚到以前版本的 chromedriver,但没有成功。
如果有人有这方面的经验,我将非常感谢您的专业知识。我确信这将是我所忽略的简单事情。
宝石版本:
watir-webdriver (0.6.2)
selenium-webdriver (2.29.0)
cucumber (1.2.1)
Run Code Online (Sandbox Code Playgroud)
从下面的 chromedriver 跟踪
Started ChromeDriver port=9517 version=26.0.1383.0
log=C:\Projects\oms_acceptance_tests\src\chromedriver.log
[6136:5300:0212/122320:ERROR:master_preferences.cc(110)] Failed to read master_preferences file at C:\Program Files (x86)\Google\Chrome\Application\master_preferences. Falling back to default preferences.
[6136:5300:0212/122320:ERROR:gpu_info_collector_win.cc(82)] Can't retrieve a valid WinSAT assessment.
test\automation\proxy_launcher.cc(107): error: Value of: app_launched
Actual: 5
Expected: AUTOMATION_SUCCESS
Which is: 0
Error while awaiting automation ping from browser process
[0212/122321:ERROR:proxy_launcher.cc(556)] Failed to ConnectToRunningBrowser
[0212/122321:ERROR:automation_proxy.cc(319)] Channel error …Run Code Online (Sandbox Code Playgroud) 我在使用测试类中定义的全局变量时遇到问题,然后在库文件中引用该全局变量。我正在使用 Ruby 1.9.3p392 和测试单元 2.5.4。
这是运行测试的代码:
require 'rubygems'
gem 'test-unit'
require 'test/unit'
require 'ci/reporter/rake/test_unit_loader'
load '../lib/functions.rb'
require 'watir'
class Test_002 < Test::Unit::TestCase
include Functions
class << self
def startup
@browser = Watir::Browser.new :ie
@browser.speed = :fast
end
def shutdown
@browser.close
end
end
def test_001_login
login('some_url', 'some_user', 'some_passw')
end
end
Run Code Online (Sandbox Code Playgroud)
这是包含登录功能的库的一部分:
require 'rubygems'
module Functions
def login(url, user, passw)
@browser.goto(url)
...
end
end
Run Code Online (Sandbox Code Playgroud)
这是输出:
Started
E
===============================================================================
Error: test_001_login(Test_002)
NoMethodError: undefined method `goto' for nil:NilClass
(...)
23: end
24:
25: def …Run Code Online (Sandbox Code Playgroud) ruby ×6
selenium ×2
watir ×2
ios ×1
objective-c ×1
rspec ×1
unit-testing ×1
webdriver ×1
xpath ×1
xvfb ×1