处理Selenium Python中的警报

时间:2017-02-02 15:19:35

标签: javascript python selenium

我有以下弹出警报,我想在文件上传后处理。我使用了下面的代码,它会抛出下面的错误。

enter image description here

wait.until(EC.alert_is_present())
driver.switch_to.alert().accept()
  

追踪(最近一次通话):     文件" update.py",第45行,in       driver.switch_to.alert()接受()   TypeError:'提醒'对象不可调用

为什么会这样?我已经用这种方式处理了一个类似的警报(那个人有一个取消按钮?)。

3 个答案:

答案 0 :(得分:2)

Python + selenium中有two ways to accept alertJavaScript还有execute_script()个代码,但它与当前问题无关:< / p>

driver.switch_to_alert().accept() # deprecated, but still works
driver.switch_to.alert.accept()

请注意,在第二行中,您不需要像在代码中那样调用 alert()

答案 1 :(得分:0)

  

警报框的问题(特别是甜蜜警报是他们有一个   延迟和Selenium太快了)

对我有用的选项是:

while True:
    try:
        driver.find_element_by_xpath('//div[@class="sweet-alert showSweetAlert visible"]')
        break
    except:
        wait = WebDriverWait(driver, 1000)

confirm_button = driver.find_element_by_xpath('//button[@class="confirm"]')
confirm_button.click()

答案 2 :(得分:0)

在Selenium Python中处理警报的另一种方法是,如果不需要通知,则将其全部消除。

您可以将选项传递到WebDriver浏览器,以禁用通知。

使用Chrome作为浏览器的Python示例代码,其中包含以下选项:

from selenium import webdriver 
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-notifications")
driver = webdriver.Chrome(ChromeDriverManager().install(),options=chrome_options) 

driver.get('https://google.com')
print("opened Google")
driver.quit()