我有以下弹出警报,我想在文件上传后处理。我使用了下面的代码,它会抛出下面的错误。
wait.until(EC.alert_is_present())
driver.switch_to.alert().accept()
追踪(最近一次通话): 文件" update.py",第45行,in driver.switch_to.alert()接受() TypeError:'提醒'对象不可调用
为什么会这样?我已经用这种方式处理了一个类似的警报(那个人有一个取消按钮?)。
答案 0 :(得分:2)
Python
+ selenium
中有two ways to accept alert个JavaScript
还有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()