Ruby 无法单击';取消';按钮

Ruby 无法单击';取消';按钮,ruby,selenium-webdriver,Ruby,Selenium Webdriver,我正在使用SeleniumWebDriver和Ruby编写自动化脚本。在这种情况下,我必须单击“取消”按钮,下面是它的html代码: <div class="ui-dialog-buttonset"> <button class="otherButtonClass" type="button" role="button" aria-disabled="false"> <span class="ui-button-text">Rename</span

我正在使用SeleniumWebDriver和Ruby编写自动化脚本。在这种情况下,我必须单击“取消”按钮,下面是它的html代码:

<div class="ui-dialog-buttonset">
 <button class="otherButtonClass" type="button" role="button" aria-disabled="false">
  <span class="ui-button-text">Rename</span>
 </button>
 <button class="cancelButtonClass" type="button" role="button" aria-disabled="false">
  <span class="ui-button-text">Cancel</span>
 </button>
</div>
在这里,单击操作不会发生。我尝试了睡眠,等{element.displayed?}问题仍然没有解决。引发的错误是“元素不可见,因此可能无法与之交互”

但是,如果我在“重命名”按钮上执行单击操作,它会起作用:

driver.find_element(:xpath, "//button[@class='otherButtonClass']").click

请帮助我理解为什么会发生这种情况。我很困惑,'Rename'和'Cancel'有相似的html代码,仍然点击'Rename'通过,点击'Cancel'失败。为什么会这样?

您可以尝试以下方法:

script = <<-end
element = arguments[0];
element.setAttribute('aria-disabled','true');
return element;
end

# select the 'Cancel' button element
elem = driver.find_element(:css,'div.ui-dialog-buttonset>button')[1]
# setting the 'aria-disabled' to true
elem = driver.execute_script(script,elem)
#after enabling the css attribute 'aria-disabled' click on the
#cancel button
elem.click

script=如果按钮CSS对于任何悬停动作都是动态的,那么使用CSS选择将不是一个完美的解决方案。另外,选择给定元素的简单方法是使用以下xpath

driver.find_element(:xpath, "//span[text()='Cancel']").click

是的,我同意,我建议只有在按钮的CSS是动态的情况下才使用该解决方案。
driver.find_element(:xpath, "//span[text()='Cancel']").click