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

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

既然不是元素等待问题,接下来考虑是不是frame不同导致元素无法识别。因为某些弹出框,本身不一定是alert、confirm等类型,也可能是一个弹出页面(虽然这个弹出框看着不像,还是要排查下)。使用Chrome自带的开发者工具(F12)发现无法识别该弹出框的任何元素。
开始怀疑这个是Chrome自身的弹出框,而不是网站的弹出框。
验证:使用Firefox浏览器操作,发现不会出现该弹出框,可以确认这是Chrome自身的弹出框。
这种提示一般跟Chrome的设置有关,然而在设置页面没有找到相关的配置项。

这个时候当然是找百度帮忙了,然而在我变换了多个搜索关键字后也搜索不到我想要的结果。我就纳闷了,难道其他人都没遇到过这种情况吗?不过也不奇怪,我也是第一次遇到这种权限申请,一般都是“网站想要发送通知”的那种。
其实

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





