Python 中的错误“其他元素会收到点击”

新手上路,请多包涵

我试图点击这样的链接:

 <div class="loading" style="display:none;">
<p class="btn blue"><span>さらに表示</span></p>
<a href="javascript:void(0);" onclick="get_more();"></a>
</div>

我使用了这段代码:

 element = WebDriverWait(driver, 30).until(lambda x: x.find_element_by_css_selector(".btn.blue"))  # @UnusedVariable
element.click()

我遇到了这样的错误,我该怎么做才能解决它?

 selenium.common.exceptions.WebDriverException: Message: unknown error: Element <p class="btn blue">...</p> is not clickable at point (391, 577). Other element would receive the click: <a href="javascript:void(0);" onclick="get_more();"></a>
(Session info: headless chrome=69.0.3497.100)
(Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 6.1.7601 SP1 x86_64)

原文由 mikezang 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 488
1 个回答

您尝试单击的元素已被其他元素覆盖,因此其他元素而不是实际元素获得了点击。

实际元素没有被点击可能有以下几种可能性:

  • 案例一。假设它是一个加载器,它在您的元素加载时出现,并在一段时间后变得不可见。

解决方案: 在这里你必须等到加载器变得不可见然后必须执行点击实际元素

    from selenium.webdriver.support import expected_conditions as EC
    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.invisibility_of_element_located((By.ID, 'loader_element_id')))
    element_button = wait.until(EC.element_to_be_clickable((By.ID, 'your_button_id')))
    element_button.click()

  • 案例二。实际元素在浏览器维度中不可见,并被某些覆盖元素覆盖。

解决方案: 在这里你需要滚动到所需的元素,然后必须执行点击

    from selenium.webdriver.common.action_chains import ActionChains

    element = driver.find_element_by_id("your_element_id")

    actions = ActionChains(driver)
    actions.move_to_element(element).perform()

或者使用可以使用 execute_script 像:

     driver.execute_script("arguments[0].scrollIntoView();", element)

或者使用 JavaScript 执行点击。

     driver.execute_script("arguments[0].click();", element)

注意:如果需要,请根据 Python 语法进行必要的更正。

原文由 NarendraR 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进