我正在使用Selenium WebDriver和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>
点击“取消”按钮,我写了以下内容:
driver.find_element(:xpath, "//button[@class='cancelButtonClass']").click
此处点击操作不会发生。我试过睡觉,wait.until {element.displayed?仍然没有解决问题。抛出的错误是'元素不可见,因此可能无法与'
进行交互但是,如果我在“重命名”按钮上执行点击操作,则可以:
driver.find_element(:xpath, "//button[@class='otherButtonClass']").click
请帮助我理解为什么会这样。我很困惑,'重命名'和'取消'有类似的HTML代码,仍然点击'重命名'传递并点击'取消'失败。为什么这样?
答案 0 :(得分:0)
您可以尝试以下方法:
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
答案 1 :(得分:0)
如果Button CSS对任何悬停操作都是动态的,那么使用CSS选择将不是一个完美的解决方案。选择给定元素的简单方法是使用以下xpath。
driver.find_element(:xpath, "//span[text()='Cancel']").click