我想提出一个断言,当我打开一个新窗口时,断言网址现在包含?preview=true
到目前为止我所拥有的:
p @browser.url.include? '?preview=true'
然而,当我去运行它时,它总是返回false。
如果我跑
p @browser.url
它正确读取url(显然,包括字符串的“?preview = true”部分)
是否有一种方法我没有阅读url字符串的 part ?
答案 0 :(得分:1)
我认为你走在正确的轨道上。对于Rspec断言,你应该可以尝试这样的部分url:
@browser.url.should include('?preview=true')
您还可以为完整网址执行以下操作:
@browser.url.should == "google.com"
答案 1 :(得分:0)
我怀疑您可能有计时问题,可能会在更新网址之前进行检查。
我刚刚使用IRB手动测试了它,以确保它可以正常工作,据我所知,它应该是。
$irb
irb(main):001:0> require 'watir-webdriver'
=> true
irb(main):002:0> b = Watir::Browser.new :chrome
=> #<Watir::Browser:0x..f7db893ba0a186b8 url="data:," title="">
irb(main):003:0> b.goto 'http://google.com'
=> "http://google.com"
irb(main):004:0> puts b.url
https://www.google.com/?gws_rd=ssl
=> nil
irb(main):005:0> puts b.url.include? '?gws_rd'
true
=> nil
irb(main):006:0> puts b.url.include? '?gws_rd=ssl'
true
=> nil
irb(main):007:0>
您可能需要添加某种同步点,例如等待由于本地JS代码而出现在页面上的元素(例如在ajax调用之后),但在浏览器报告页面时不存在是'加载'
你可以通过在你试图检查URL的位置插入一个微小的调试循环来测试这一点,看看它是从一件事开始并改为另一件事。
50.times do
puts @browser.url
sleep 0.1
end