11

私は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
4

1 に答える 1

9

初心者(私のような)には、Alertをインポートする必要があることに注意してください。

from selenium.webdriver.common.alert import Alert

... ... ... (code placeholder)

browser.execute_script("document.roomBookingForm.submit(); return true;")
alert = browser.switch_to_alert()
alert.dismiss()
browser.execute_script("processPayment(); return true;")

アラートハンドラーを追加しました

于 2012-06-05T00:39:02.937 に答える