私はPython/JSと、Selenium / WebDriverを使用した自動テストにかなり慣れていませんが、ある程度の進歩を遂げました。
今、私はある時点で立ち往生していて、それは本当にイライラしています。
私がテストしているウェブサイトは製品を販売しています。スクリプトをランダムにナビゲートして支払いページに移動し、ダミーデータを入力し、次を使用してデータを送信することができました。
browser.execute_script("document.Form.submit(); return true;")
browser.execute_script("processPayment(); return true;")
通常、[今すぐ支払う]ボタンがあり、その要素をクリックすると同じ例外が発生し、WebDriver(WebElementなし)を介して[OK] / [キャンセル]をクリックする方法はありませんでしたが、この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