Ruby / Watir:单击带有role ="按钮"的元素

时间:2013-07-29 20:25:52

标签: ruby button watir role

我正在尝试编写一个脚本,在进入网站时会自动点击按钮。

网站的HTML如下:

<span id="zolaDisclaimerButton" class="dijitReset dijitStretch dijitButtonContents" waistate="labelledby-zolaDisclaimerButton_label" wairole="button" dojoattachpoint="titleNode,focusNode" role="button" aria-labelledby="zolaDisclaimerButton_label" tabindex="0" title="I acknowledge this disclaimer... Let ZoLa begin!" style="-moz-user-select: none;">

我尝试过以下操作但它们不起作用:

browser.span(:id, "zolaDisclaimerButton").click
browser.button(:id, "zolaDisclaimerButton").click

如何点击这些类型的按钮?有问题的网址是: http://gis.nyc.gov/doitt/nycitymap/template?applicationName=ZOLA

编辑:这是我使用的代码:

require "watir"
browser = Watir::Browser.new
browser.goto "http://gis.nyc.gov/doitt/nycitymap/template?applicationName=ZOLA"
browser.span(:id, "zolaDisclaimerButton").click
puts "fin"

导航到页面,不点击任何内容,然后打印'fin'(让我知道它已经完成)。没有例外。

1 个答案:

答案 0 :(得分:1)

如果页面未及时加载,您可以添加等待 - 请参阅http://watirwebdriver.com/waiting/。这些等待方法将等待,直到满足条件或超过时间限制。它比使用sleep更好,因为它只需要等待所需的时间(而不是等待1秒内加载的东西)。

在这种情况下,请在点击之前使用when_present方法:

require "watir"
browser = Watir::Browser.new
browser.goto "http://gis.nyc.gov/doitt/nycitymap/template?applicationName=ZOLA"
browser.span(:id, "zolaDisclaimerButton").when_present.click
puts "fin"