言語、場所などによって異なるバージョンのWebサイトにフォームを記入しようとしています。私はすべてのリクエストに対して同じFirefoxプロファイルを使用しています。情報はクッキーにローカルに保存されるため、最初に設定を選択した後はしばらくの間モーダルが表示されません。 しかし:離れて、フォームからフォーカスを取り、より多くの困難を追加するにはElementNotInteractableException.
Selenium Python bindings:矛盾したモーダルを処理する
を引き起こし、矛盾現れているようだ、モーダルは、多くの場合、ページが読み込まれた後、いくつかの時間が表示されます。たとえば、最初のフィールドは既に入力されていて、次に表示されます。
私の質問は、このモーダルを処理する最良の方法は何ですか?外見によって例外原因をキャッチし、モーダルの存在を確認してから、フォームフィールドに値を入力し続けることはできますか?または、より良い解決策がありますか?
ありがとうございました。
私がこれまで試してみましたコード:
url = "https://www.aircanada.com/ca/en/aco/home.html"
control_profile = webdriver.FirefoxProfile('/path/to/my/profile')
browser_control = webdriver.Firefox(control_profile)
browser_control.get(url)
# To deal with the modal, but obviously fails when it is not present
browser_control.find_element_by_id('enCAEdition').click()
# two text fields I tried to fill out, as a sanity check
departure = browser_control.find_element_by_id('origin_focus_0')
departure.send_keys("my departure location")
departure.send_keys(Keys.RETURN)
destination = browser_control.find_element_by_id('destination_label_0')
destination.send_keys("my destination")
destination.send_keys(Keys.RETURN)
、ページ 'URL'とコードを共有することができますが、これまでに試したことはありますか? – Andersson
確かに、ここにページがあります:https://www.aircanada.com/ca/en/aco/home.html、私のコードを質問に追加します –
私はいくつかのテキストを記入しようとする2つの簡単な例を含めましたフィールドは、モーダルのために失敗します。多くの場合、最初のフィールドは正しく記入されていますが、返品を送信する直前には失敗します。それ以外の場合は、モーダルが表示されず、最初のボタン要素が表示されない場合は失敗します。 –