python - ElementClickInterceptedException:消息:元素点击被拦截:
问题描述
我有这样的代码
for i in range(int(total_fill)):
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH,f'//*[@id="maincontentid"]/app-dashboard/app-itr-status/div[4]/div[{i+1}]/mat-card/div/div/div[4]/div[2]')))
b = driver.find_element_by_xpath(f'//*[@id="maincontentid"]/app-dashboard/app-itr-status/div[4]/div[{i+1}]/mat-card/div/div/div[4]/div[2]').click()
但我收到了这个错误:
ElementClickInterceptedException: Message: element click intercepted: Element <div _ngcontent-oyq-c49="" class="btnBox">...</div> is not clickable at point (753, 26). Other element would receive the click: <span _ngcontent-oyq-c4="" class="sessionTimeHeading">...</span>
(Session info: chrome=91.0.4472.114)
解决方案
首先尝试使用element_to_be_clickable
而不是presence_of_element_located
.
如果这仍然没有帮助,您可以使用JavaClick
代替driver.click()
.
所以如果这仍然不能正常工作
for i in range(int(total_fill)):
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,f'//*[@id="maincontentid"]/app-dashboard/app-itr-status/div[4]/div[{i+1}]/mat-card/div/div/div[4]/div[2]')))
b = driver.find_element_by_xpath(f'//*[@id="maincontentid"]/app-dashboard/app-itr-status/div[4]/div[{i+1}]/mat-card/div/div/div[4]/div[2]').click()
尝试这个:
for i in range(int(total_fill)):
el = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,f'//*[@id="maincontentid"]/app-dashboard/app-itr-status/div[4]/div[{i+1}]/mat-card/div/div/div[4]/div[2]')))
driver.execute_script("arguments[0].click();", el)
我必须注意:强烈建议不要使用如此复杂的定位器,//*[@id="maincontentid"]/app-dashboard/app-itr-status/div[4]/div[{i+1}]/mat-card/div/div/div[4]/div[2]
因为它们非常不可靠。
另外,请在此处阅读有关ElementClickInterceptedException
推荐阅读
- swift - 全局函数调用协议类型的变异方法。如何摆脱 var tmp 对象?
- sql-server - SELECT Top (100) 比 Top (1) 快很多
- ruby-on-rails - 如果我缩短哈希中每个键名的长度,会缩短该哈希的读/写时间吗?
- c# - 使用 POCO 类、Unity 和 EF6 更新记录后的 Automapper 错误
- html - CSS 网格中的中心行
- windows - Windows 筛选器驱动程序和筛选器管理器
- git - diff 不包含新文件
- excel - 从另一个工作簿运行 Excel 宏
- javascript - Mozilla pdf.js 在多个渲染()操作期间无法使用相同的画布
- oracle - 在 Oracle 12c 中添加带有 IF/ELSE 子句的内联函数