0

以下是我正在使用的代码

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']
4

1 回答 1

1

您必须使用该switch_to方法来处理弹出窗口。查看以下文档JavaScript dialogs

您可以使用 webdriver 来处理 Javascript 的 alert()、prompt() 和 confirm() 对话框。这三个的 API 是相同的。

注意:此时警报处理仅在 Firefox 和 IE 中可用(或在那些通过远程服务器的浏览器中),并且只能捕获在加载后生成的警报。

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='dia‌​logConfirmChanges-publishButton']").click
于 2013-09-25T11:38:35.237 回答