前言
我们一般使用如下方式点击元素:
elem = driver.find_element(...)
elem.click()
# 或者使用带等待条件的方式
elem = webdriverwait(driver, 10).until(EC.xxx(...))
elem.click()
正常情况下,这样去做是没问题的,但某些情况下可能会有报错:
selenium.common.exceptions.ElementClickInterceptedException: Message: Element ...... is not clickable at point (xxx,yyy) because another element ...... obscures it
步骤
方式1,等待obscure元素消失。可以使用time.sleep()
,或者使用等待条件EC.invisibility_of_element_located
,实在没法解决的情况下可以尝试。
方式2,通过js脚本去点击。推荐。
elem = webdriverwait(driver, 10).until(EC.xxx(...))
driver.executescript('arguments[0].click()', elem)
这种方式在大部分情况下都行得通,某些情况下会出现报错:
selenium.common.exceptions.JavascriptException: Message: TypeError: arguments[0].click is not a function
这就需要改为:
elem = webdriverwait(driver, 10).until(EC.xxx(...))
driver.execute_script('arguments[0].scrollIntoView();', elem)
elem.click()
或者正常情况下用arguments[0].click
,异常了再使用arguments[0].scrollIntoView
elem = webdriverwait(driver, 10).until(EC.xxx(...))
try:
driver.executescript('arguments[0].click()', elem)
except selenium.common.exceptions.JavascriptException:
driver.execute_script('arguments[0].scrollIntoView();', elem)
elem.click()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。