私はPython上でSelenium webdriverを使用してWebページのオートメーションコードを作成しています。しかし、ある時点でCaptchaを求めます。だから、私はjavascriptのダイアログボックスのポップアップを使って手動でcaptchaを入力することに決めました。しかし、私のコードの問題は、実装を成功させるためにはwaitを使用し、wait()の後に自動的に警告ボックスを受け入れることです。キャプチャを入力した後に入力し、このエラーがスローされると、私は押した場合はここでSelenium Pythonのjavascriptダイアログボックスの処理
selenium.common.exceptions.UnexpectedAlertPresentException
は私のコードです -
def captcha():
driver.execute_script("var a = prompt('Enter Captcha', '');document.body.setAttribute('data-id', a)")
time.sleep(7)
driver.switch_to.alert.accept()
driver.find_element_by_id("captcha_code").send_keys(driver.find_element_by_tag_name('body').get_attribute('data-id'))
driver.find_element_by_id("captcha_code").send_keys(Keys.RETURN)
それを改善するために、私はのループが毎秒アラートボックスの有無をチェックしているのに、動作していないこのコードを試しました。
現在アラートをそして、私は何の警告ボックスが存在しない場合でも、長い時間のためにこれを印刷し続けて -
def captcha(): driver.execute_script("var a = prompt('Enter Captcha', '');document.body.setAttribute('data-id', a)") while EC.alert_is_present(): time.sleep(1) print("Alert Present") try: driver.switch_to.alert.accept() except selenium.common.exceptions.NoAlertPresentException: print("Error Encountered...") continue driver.find_element_by_id("captcha_code").send_keys(driver.find_element_by_tag_name('body').get_attribute('data-id')) driver.find_element_by_id("captcha_code").send_keys(Keys.RETURN)
それは常に印刷します。
この上の任意のヘルプは理解されるであろう。前もって感謝します。
と評価されますので、関数を返しますがクロムまたはFirefoxを使用していますか? –
Chromeウェブドライブを使用しています。 –