Selenium 最近用 selenium 定位弹窗的元素总失败,各位大佬看看原因呢

阿根 · 2022年08月31日 · 最后由 Thirty-Thirty 回复于 2022年09月01日 · 6292 次阅读

如图的弹窗:

下面这个是弹窗在页面上新增的 div 标签:

所以我元素直接定位这个 div 标签内的元素:

结果定位不到,不知道是不是要 switch_to?

共收到 11 条回复 时间 点赞

这个是你执行获取弹窗时,还未加载,使用(显性等待):
WebDriverWait(self.driver, timeout, poll_frequency).until(lambda x: x.find_element(*loc))

有没有可能你脚本执行的时候弹窗没出来所以没有定位到

七街老酒 回复

应该不是,我 sleep 了几秒都不行

CmYzzZ 回复

我用 sleep 了,不得行

1、开发者工具中搜索你的元素,看看能不能定位到

2、考虑加个显示等待,sleep

执行的时候打个断点调试一下, 在弹窗弹出来的时候检查下你的 XPATH 能不能定位到元素
如果可以定位,尝试使用显示等待,然后优化一下定位,//* 这种效率还是比较低的
如果定位不到,说明 xpath 写得有问题,我觉得问题可能出在你后面的 /..上 ,确认下你的去设计和这个 div 是不是父子级关系

包小松 回复

我试过 text 获取文本,但是获取不到,但是又不报错,很神奇

单看截图不用 switch, 可以试试 wait.until(ec.invisibility_of_element_located()),等待可点击再点击

你可以打印下是否获取到弹窗元素

switch_to_alert

阿根 回复

看了下你的回复,不报错说明应该是可以定位的, 使用 text 获取不到可能是你要获取的文本不是直接在 div 里,可能是在其中的某个子标签中?继续向下定位看看

12楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册