How to accept alert that is triggered by 'get' in selenium (python, chromedriver)?

*爱你&永不变心* 提交于 2019-12-11 08:35:06

问题


I am trying to use selenium to navigate from some page to another:

driver = webdriver.Chrome()
driver.get("...some page...")
...  # the alert does not exist yet and thus cannot be accepted
driver.get("...some other page...") # the alert pops up here and blocks navigation to 'some other page'
# execution never reaches here
...

Now, navigating away from 'some page' triggers an alert, asking to confirm that one really wants to leave the page. This blocks execution forever. An implicit timeout was set, but is not triggered by this. I cannot get selenium to accept the alert, because only appears after calling 'get'.

Is there any way around this?

Thank you very much!


回答1:


Try following code and let me know if it's not working

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

driver = webdriver.Chrome()
driver.get("...some page...")
try:
    WebDriverWait(driver, 5).until(EC.alert_is_present())
    driver.switch_to_alert().accept()
except TimeoutException:
    print("Alert not found. Move on...)
driver.get("...some other page...")



回答2:


Try overwriting the javascript alert function.

driver.get('https://stackoverflow.com/questions/40259660/how-to-accept-alert-that-is-triggered-by-get-in-selenium-python-chromedriver#40259660')
wmd_input = ref_settings.driver.find_element(By.ID, 'wmd-input')
wmd_input.click()
wmd_input.send_keys('That's a test for a model JS dialog')

#the following line overwrites the alert function
driver.execute_script("""window.alert = function() {};alert = function() {};""")
time.sleep(3)
ref_settings.driver.get('http://stackoverflow.com')


来源:https://stackoverflow.com/questions/40259660/how-to-accept-alert-that-is-triggered-by-get-in-selenium-python-chromedriver

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!