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() ダイアログを処理できます。3 つすべての 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 に答える