我有以下代码
browser.link(:text => 'Generate Report').click
browser.radio(:value => 'byTotalValue').wait_until_present(180)
Run Code Online (Sandbox Code Playgroud)
请求生成报告,然后通过在报告页面上查找元素来等待报告.报告最多可能需要2分钟才能显示.
发生的事情是Timeout :: 60秒后从click方法引发错误.我怀疑Watir-Webdriver在click方法中实现了某种形式的等待页面加载,但我没有看到调整值的方法.
任何帮助理解这一点将不胜感激.
我试图告诉我的watir脚本等待ajax注入的登录框打开.我正在使用watir-webdriver,并在Chrome中进行测试.我无法开始wait_until
工作,如下面(简化)脚本中所评论的那样.
require "rubygems"
require "watir-webdriver"
b = Watir::Browser.new(:chrome)
site = "www.example.com"
b.goto site
puts "Click on Sign In button"
b.link(:id, 'btnLogin').click
puts "Waiting for the username/password dialog to show up"
# Below line does *not* work
# Throws this error: "uninitialized constant Watir::Waiter (NameError)"
Watir::Waiter::wait_until { b.text_field(:id, 'username').exists? }
# Below line does *not* work
# Throws this error: "undefined method `wait_until' for main:Object (NoMethodError)"
wait_until { b.text_field(:id, 'username').exists? }
# Below line *does* work, but I don't …
Run Code Online (Sandbox Code Playgroud) 就这么简单:
我怎样才能获得Browser.text.include?
,或红宝石一般,是案件为指定的命令不敏感?
我正在为使用Ruby和Watir的客户端开发一个项目.他要求在重新加载应用程序时恢复会话(以便保存其登录状态).这是Chrome的正常行为(似乎),Firefox也可以选择这样做.
我已经尝试了所有我能想到的东西,似乎无法使用watir-webdriver来实现这一点.我已经指定Watir使用特定的配置文件(您认为它可以解决问题),确保所有设置都正确(它们是,因为它们在我自己启动浏览器时起作用).我尝试使用各种开关和配置文件选项,我认为可能有所帮助.没有.
所以,问题是,为什么会发生这种情况,我可以采取哪些措施来解决或解决这个问题?在这一点上,我几乎完全没有想法了.我甚至尝试在IRB中手动保存和重新加载cookie,但无济于事......
我知道这一定是可能的,因为当我手动登录网站时,关闭浏览器并重新打开它,我仍然登录.我需要重现这种确切的行为,但是在手册之间的某处出现了问题Chrome/Firefox的实例,以及由Watir控制的实例.
最后,我会提到我注意到,当我指定我的个人资料时,它会加载我的历史记录条目,但不会加载任何cookie.这让我越来越迷茫.
如果有人可以帮助我,我将不胜感激.
firefox google-chrome webdriver watir-webdriver selenium-chromedriver
我正在切换我的Watir/FireWatir脚本以使用watir-webdriver并需要在watir-webdriver中使用一种方法来确定当前正在执行测试的浏览器类型(IE,FF,Chrome).
使用Watir/FireWatir查看浏览器的类将返回"Watir :: IE"或"FireWatir:Firefox".使用该代码可以分支以执行特定于浏览器的代码.
在watir-webdriver中,浏览器的类始终是"Watir :: Browser",在运行IE,Firefox或Chrome时它并没有变化.
def is_ie?()
return self.class.to_s == "Watir::IE"
end
def is_firefox?()
return self.class.to_s == "FireWatir::Firefox"
end
if(browser.is_ie?)
# run the IE specific code
end
if(browser.is_firefox?)
# run the firefox specific code
end
提前谢谢,
乔
我是Ruby的新手,非常感谢帮助理解这里发生了什么.
摘要:
宝石安装watir-webdriver
安装精细
启动irb
需要"watir-webdriver"
... LoadError:没有这样的文件加载--watir-webdriver
当然这应该回应
=> true
Run Code Online (Sandbox Code Playgroud)
为什么找不到宝石?或者我做错了什么?
我在win7上,Railsinstaller(Ruby 1.8.7).
我查看了这些页面上的示例
http://watir.com/examples/ http://wiki.openqa.org/display/WTR/Examples
我仍然没有看到获取页面html的简单示例.
browser = Watir::Browser.new
browser.goto 'mysite.com'
Run Code Online (Sandbox Code Playgroud)
我试过了
puts browser.text
Run Code Online (Sandbox Code Playgroud)
它似乎不起作用.
谢谢
使用Watir,有没有办法访问没有属性的元素?
例如:
<span>Text</span>
Run Code Online (Sandbox Code Playgroud)
我想避免使用xpath,但如果这是唯一的方式很酷.
automation automated-tests watir webautomation watir-webdriver
我是WATIR测试的新手(我喜欢它!)并且已经碰到了如何将我的WATIR脚本重新聚焦到新打开的窗口的问题.这是我的(简化)脚本....
#!/usr/bin/ruby
require 'rubygems'
require 'watir-webdriver'
browser=Watir::Browser.new
browser.goto("http://0:3050")
browser.text_field(:name,"userkey300203830").set("OKJHNB")
browser.button(:id, "interview48").click
puts "Expected Result:"
puts "A successful display of cars"
if browser.window(:title=>"300203830").exists?
puts " Test passed. New window opened!"
else
puts " Test Failed! No window found"
end
Run Code Online (Sandbox Code Playgroud)
这一切都可以直到最后.单击"interview48"键后,将打开一个标题为"300203830"的新窗口.看起来我找到了但我现在还不知道如何关注那个窗口.
我正在尝试使用Rest-client gem为我的应用程序执行一些小任务,这些任务使用Authlogic对用户进行身份验证.从Rest-Client的API,我看到可以发布登录过程所需的数据,如下所示:
require 'rest_client'
RestClient.post "http://127.0.0.1:3000/user_sessions", {:user_session => {:username => 'myusername', :password => 'mypassword'}}.to_json, :content_type => :json, :accept => :json
Run Code Online (Sandbox Code Playgroud)
查看我的开发日志,我看到该应用程序已登录我并将我正确地重定向到用户的私人页面.但是,当我试图"重新加载"私人页面时,
RestClient.get 'http://127.0.0.1:3000/users/1'
Run Code Online (Sandbox Code Playgroud)
我再次回到登录页面,好像我还没有登录.所以我想知道这是否与会话或cookie有关?
我已经使用cURL成功地重现了这个场景,我使用开关'-c cookie.txt'来保存我已登录的信息,并使用开关'-b cookie.txt'为每个调用告诉远程服务器关于我的身份验证.我可以理解这个概念,就像在主题公园或他们知道你支付的酒吧时手腕上的印章一样.但我发现RestClient中没有提到这种机制.任何帮助都可以解决这个问题.我也不介意尝试其他http客户端.
问候
watir ×8
ruby ×6
webdriver ×3
authlogic ×1
automation ×1
firefox ×1
firewatir ×1
rest ×1
rest-client ×1