我正在处理的网页链接是http://www.whatcar.com/car-news/subaru-xv-review/260397
我正在尝试自动“点击谷歌链接”,但我没有运气并继续收到错误。
链接HTML:
<a tabindex="0" role="button" title="" class="s5 JF Uu" id="button" href="javascript:void(0);" aria-pressed="false" aria-label="Click here to publicly +1 this."></a>
我的代码:
@browser.link(:class, "s5 JF Uu").click
错误讯息:
unable to locate element, using {:class=>"s5 JF Uu", :tag_name=>"a"} (Watir::Exception::UnknownObjectException)
./step_definitions/11.rb:12:in `/^On the page I click 'Twitter' , Facebook and Google button$/'
11.feature:8:in `When On the page I click 'Twitter' , Facebook and Google+ button'
答案 0 :(得分:2)
链接位于框架内。为了使其更有趣,每次刷新页面时框架id
都不同。
browser.frames.collect {|frame| frame.id}
=> ["I1_1323429988509", "f3593c4f374d896", "f4a5e09c20624c", "stSegmentFrame", "stLframe"]
browser.refresh
=> []
browser.frames.collect {|frame| frame.id}
=> ["I1_1323430025052", "fccfdf9410ef34", "f11036dad706668", "stSegmentFrame", "stLframe"]
I1_1323429988509
和I1_1323430025052
是框架。由于I1_
部分始终相同,而其他任何框架都没有,您可以像这样访问框架:
browser.frame(:id => /I1_/)
由于框架内只有一个链接:
browser.frame(:id => /I1_/).as.size
=> 1
您可以点击以下链接:
browser.frame(:id => /I1_/).a.click
或者如果您希望更明确
browser.frame(:id => /I1_/).a(:id => "button").click
这将打开一个新的浏览器窗口,这里面临一个新的挑战! :)
答案 1 :(得分:1)
技术答案: 您链接的页面上的按钮类与我列出的类不同。看起来它基于本地计算机上的cookie(在Watir驱动的Firefox或IE会话期间不存在)会有不同的行为。
你需要找到一个不动态的不同元素来挂钩。
道德答案: 您试图通过社交媒体自动推广在线文章是值得怀疑的。 Watir / Watir-Webdriver不是垃圾邮件机器人,您使用的服务明确禁止使用自动化/机器人。
答案 2 :(得分:1)
“按钮”链接位于iframe内。阅读watir Wiki how to deal with stuff in frames。如果这还不足以使其运行,请使用修改后的代码和错误等编辑答案,我们可以从那时开始工作。