Selenium无法识别Chrome的弹出框(提示xxx想要在此设备上存储文件)

在尝试从某网站爬取题库时,遇到Selenium无法识别Chrome的存储权限弹出框问题,导致"no such alert"异常。经过排查,确认该弹出框为Chrome自身权限请求,而非网页元素。通过在启动Chrome时添加--unlimited-storage参数,并删除处理alert的代码,成功避免弹出框并实现正常运行。
摘要由CSDN通过智能技术生成

最近想从某培训机构网站上爬取题库,遇到了弹出框无法识别的问题,控制台提示“selenium.common.exceptions.NoAlertPresentException: Message: no such alert”。

然而弹出框是确实存在的啊,设置了元素等待,在报错之前弹出框已经出现了的。手动点击没有问题。

既然不是元素等待问题,接下来考虑是不是frame不同导致元素无法识别。因为某些弹出框,本身不一定是alert、confirm等类型,也可能是一个弹出页面(虽然这个弹出框看着不像,还是要排查下)。使用Chrome自带的开发者工具(F12)发现无法识别该弹出框的任何元素。

开始怀疑这个是Chrome自身的弹出框,而不是网站的弹出框。

验证:使用Firefox浏览器操作,发现不会出现该弹出框,可以确认这是Chrome自身的弹出框。

这种提示一般跟Chrome的设置有关,然而在设置页面没有找到相关的配置项。

Selenium 可以模拟处理弹出,一般有以下几种情况: 1. Alert 弹出:可以使用 `switch_to.alert` 方法切换到弹出,然后使用 `accept()` 或 `dismiss()` 方法确认或取消弹出。 示例代码: ```python from selenium import webdriver driver = webdriver.Chrome() # 打开网页 driver.get("https://www.baidu.com") # 点击弹出 Alert 按钮 alert_btn = driver.find_element_by_id("alert_button") alert_btn.click() # 切换到 Alert 弹出 alert = driver.switch_to.alert # 确认 Alert 弹出 alert.accept() # 关闭浏览器 driver.quit() ``` 2. Confirm 弹出:与 Alert 弹出类似,可以使用 `switch_to.alert` 方法切换到弹出,然后使用 `accept()` 或 `dismiss()` 方法确认或取消弹出。不同的是,Confirm 弹出会询问用户是否确定操作。 示例代码: ```python from selenium import webdriver driver = webdriver.Chrome() # 打开网页 driver.get("https://www.baidu.com") # 点击弹出 Confirm 按钮 confirm_btn = driver.find_element_by_id("confirm_button") confirm_btn.click() # 切换到 Confirm 弹出 confirm = driver.switch_to.alert # 确认 Confirm 弹出 confirm.accept() # 关闭浏览器 driver.quit() ``` 3. Prompt 弹出:与 Confirm 弹出类似,可以使用 `switch_to.alert` 方法切换到弹出,然后使用 `send_keys()` 方法输入数据,使用 `accept()` 或 `dismiss()` 方法确认或取消弹出。不同的是,Prompt 弹出会让用户输入一些数据。 示例代码: ```python from selenium import webdriver driver = webdriver.Chrome() # 打开网页 driver.get("https://www.baidu.com") # 点击弹出 Prompt 按钮 prompt_btn = driver.find_element_by_id("prompt_button") prompt_btn.click() # 切换到 Prompt 弹出 prompt = driver.switch_to.alert # 输入数据 prompt.send_keys("Hello, World!") # 确认 Prompt 弹出 prompt.accept() # 关闭浏览器 driver.quit() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值