我在用 selenium 点击页面元素时,遇到一个问题。
背景:我想点击页面元素 A。我的系统有时候会弹出一个弹窗 B,弹窗 B 过一会会自动消失,不需要点击确定或者取消才能让其消失。
1.现在遇到的问题是,如果弹窗 B 出现的时候,我点击了某个元素,程序就会报错 “ElementClickInterceptedException”。
2.在程序中,我用的是 wait. until(EC.element_to_ be_clickable((By .XPATH, value))) 方法,但是还是没法解决这个问题。用这个方法好像可以解决 “直到页面上显示出元素才会去点击”,但是我弹出弹窗 B 的时候,元素 A 已经被显示出来了。
3.我观察了一下,我的这个弹窗有个这个特点,他有一个 iframe,弹窗有个 class 属性是 “progress-mask-msg”。
4.我还想到一个办法,就是点击元素 A 之前,判断下有没有这个 iframe,如果有,就等他消失再去点击元素 A。但是也不是很靠谱,有时候我去判断的时候,这个小弹窗 B 还没显示,我判断完没有,去点击元素 A 了,然后弹窗 B 才被加载出来,我一点击 元素 A,又崩溃了。
想问在 selenium 中,有没有别的什么方法,真正轮询判断元素可以被点击的,如果不能点击,就等待一会再看能不能点击。
弹窗信息:
弹窗的代码:
我的代码报错信息:
我代码中查找元素的方法: