如图的弹窗:
下面这个是弹窗在页面上新增的 div 标签:
所以我元素直接定位这个 div 标签内的元素:
结果定位不到,不知道是不是要 switch_to?
有没有可能你脚本执行的时候弹窗没出来所以没有定位到
单看截图不用 switch, 可以试试 wait.until(ec.invisibility_of_element_located()),等待可点击再点击
你可以打印下是否获取到弹窗元素
这个是你执行获取弹窗时,还未加载,使用(显性等待):
WebDriverWait(self.driver, timeout, poll_frequency).until(lambda x: x.find_element(*loc))
1、开发者工具中搜索你的元素,看看能不能定位到
2、考虑加个显示等待,sleep
执行的时候打个断点调试一下, 在弹窗弹出来的时候检查下你的 XPATH 能不能定位到元素
如果可以定位,尝试使用显示等待,然后优化一下定位,//* 这种效率还是比较低的
如果定位不到,说明 xpath 写得有问题,我觉得问题可能出在你后面的 /..上 ,确认下你的去设计和这个 div 是不是父子级关系
看了下你的回复,不报错说明应该是可以定位的, 使用 text 获取不到可能是你要获取的文本不是直接在 div 里,可能是在其中的某个子标签中?继续向下定位看看
switch_to_alert