【问题标题】:Python Selenium error selenium.common.exceptions.ElementClickInterceptedExceptionPython Selenium 错误 selenium.common.exceptions.ElementClickInterceptedException
【发布时间】:2020-12-22 08:37:39
【问题描述】:

我有一个表,其中有几行 SiteName 1,2 等等,每个站点名称旁边都有编辑按钮。我想要一个点击所有编辑按钮的循环。但是,当我想单击某些按钮时出现错误,并且只有一些按钮可以正常工作,但是所有行的代码与您在下面看到的示例完全相同。

wls = ["//*[contains(text(), 'SiteName 8')]//following-sibling::td//a[contains(., 'Edit')]",
       "//*[contains(text(), 'SiteName 2')]//following-sibling::td//a[contains(., 'Edit')]",
       "//*[contains(text(), 'SiteName 1')]//following-sibling::td//a[contains(., 'Edit')]"]

for i in wls:
    # WL list
    driver.find_element_by_xpath(i).click()

这是我正在使用的以下兄弟,它适用于站点 1、2、3 等,但不适用于站点 8。

我收到此错误消息消息:

selenium.common.exceptions.ElementClickInterceptedException:消息:元素点击被拦截:元素 ... 在点 (1783, 946) 处不可点击。其他元素会收到点击:...

我也尝试找到完整的 xpath,但仍然收到相同的错误消息,但是按钮 Edit 是可点击的,并且链接有效且有效。

<tr>
  <td class="application_name alt" align="left">SiteName 1</td><td class="alt action">
   <div class="list-action">
    <a class="btn default " href="https://link1.com">
        <i class="fa fa-fa fa-edit">::before</i>
            Edit    
     </a>
   </div>
  </td>
</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>
 <td class="application_name alt" align="left">SiteName 8</td>
  <td class="alt action"><div class="list-action">
   <a class="btn default " href="https://link8.com">
    <i class="fa fa-fa fa-edit">::before</i>
            Edit    
   </a>
  </div>
 </td>
</tr>

【问题讨论】:

  • 可以分享链接吗?
  • 我可以但不能让你打开它,因为它只是本地的。
  • @bbfl 检查thisthis 讨论。
  • 基本上,如果它重叠,我们使用 javascript 执行器,如果它在 iframe 中,我们会预先切换到它。

标签: python selenium xpath


【解决方案1】:

使用 Java 脚本执行器 click 而不是 click 方法。

for i in wls: # WL list
    driver.execute_script("arguments[0].click();", driver.find_element_by_xpath(i))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2020-01-04
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多