以下は私が使用しているコードです
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']
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='dialogConfirmChanges-publishButton']").click
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加