私はPython/JSで新しく、またSelenium/WebDriverによる自動テストも行っています。Selenium/WebDriverスクリプトがアラート例外で中断されました "メッセージ:u'Modalダイアログが表示されました"
今私は一点で立ち往生していて、本当にイライラしています。
私がテストしているウェブサイトは、製品を販売しています。私は私のスクリプトをランダムに移動し、支払いページに取得するには、ダミーデータで埋め、使用して、データを提出させるために管理:
通常browser.execute_script("document.Form.submit(); return true;")
browser.execute_script("processPayment(); return true;")
は、有料になりましたボタンがあり、同じ例外で、その要素の結果をクリックすると、 WebDriver(WebElementはありません)を介してOK/Cancelをクリックする方法はありませんでしたが、このJSコードを実行すると、それを回避できます。私の新たに読み込まれたページ(データを送信して投稿を確認した後)に、確認とすべての正しいデータがロードされますが、Pythonスクリプトが中断され、テストを続行できません。
回避策はありますか?
は、使用してみました私はそれがやりたいことなど、そのモーダルダイアログを無視ロードし、要素の場所を継続するために次の確認ページを待つ、それらの値を印刷し、それらを格納することです:
wait = ui.WebDriverWait(browser,10)
wait.until(lambda browser: browser.title.lower().startswith('Your Receipt'))
print(browser.title)
をが、スクリプトは中断されます。申し訳ありませんが、これは答えられているが、私はそれを見つけることができませんでしたまた、私は初心者です!
ありがとうございます!
編集:
それでした!私の場合、うまくいきました。自分のコードを少し修正しました。
browser.execute_script("document.roomBookingForm.submit(); return true;")
alert = browser.switch_to_alert()
alert.dismiss()
browser.execute_script("processPayment(); return true;")
警告をインポートする必要がある初心者のための注意。
from selenium.webdriver.common.alert import Alert
alert.dismiss()メソッドは、私のために働いたのアラートハンドラを追加しました。 Thanks Tihomir S. –
もちろんalert.dismiss()は "キャンセル"ボタンを押します。 alert.accept()を使って "OK"を押してください。 –
であり、答えのブラウザは 'webdriver'のインスタンスです。 – Sinux