以下是我正在使用的代码
def self.yes_publish
sleep 5
driver.find_element(:id, 'dialogConfirmChanges-publishButton').displayed?
WAIT.until { driver.find_element(:id, 'dialogConfirmChanges-publishButton') }.click
puts driver.find_element(:id, 'embed-left-center-part').displayed?
end
但我无法点击它。这个id在irb中工作正常。 我得到一个错误模式对话框,因为webdriver在特定超时后无法找到它关闭窗口的元素。 此弹出窗口用于发布在页面上所做的更改。
xpath = .//*[@id='dialogConfirmChanges-publishButton']
答案 0 :(得分:1)
您必须使用switch_to
方法来处理弹出窗口。查看JavaScript dialogs
的文档:
您可以使用webdriver处理Javascript alert(),prompt()和confirm()对话框。三者的API都是相同的。
注意: 此时警报处理仅适用于Firefox和IE(或通过远程服务器在这些浏览器中),并且仅在onload后生成警报可以捕获。
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://mysite.com/page_with_alert.html"
driver.find_element(:name, 'element_with_alert_javascript').click
a = driver.switch_to.alert
if a.text == 'A value you are looking for'
a.dismiss
else
a.accept
end
修改强>
根据你给出的评论框HTML ..我认为下面应该有效:
driver.find_element(:xpath,"//div[@class='ui-dialog-buttonset']/button[@id='dialogConfirmChanges-publishButton']").click