Selenium无法点击一个元素

时间:2017-12-07 19:34:35

标签: python-3.x selenium

我正在使用Selenium Chromedriver,我的问题看起来像这样:

  1. 我的程序点击网站上的元素,并显示元素列表。
  2. 比使用复选框从列表中选择一个元素。
  3. 接下来它试图点击其他元素,但程序崩溃了。
  4. 当我使用inspect选项点击网站上的任何地方时,如果出现上述列表,则检查元素的代码如下所示:

    $ python -c "import ldap"
    Traceback (most recent call last):
    File "<string>", line 1, in <module>
    ImportError: No module named ldap
    

    如何在列表出现后点击网站上的任何元素?

2 个答案:

答案 0 :(得分:0)

查看共享的html代码段,“__ selectOverlay”可能是网页顶部的叠加层(如加载旋转轮/面板)。

要消除错误,您可以尝试以下操作  *等待面板/叠加消失  *如果有面板关闭按钮,请关闭面板。

然后点击网页上的任何元素

答案 1 :(得分:0)

根据您分享的HTML WebElement 在我看来是 {{>> Overlay {1}} 标记。此外,此 div 标记没有关联的 div 事件。因此,我们无法立即点击onClick()。可能您可能尝试通过 WebElement <在其他元素上调用 click() 方法,该元素具有临时/永久叠加 / strong> tag。

解决方案

根据叠加的类型,有两种可能的解决方案如下:

  • div

    在这种情况下, Temporary Overlay ExplicitWait 设置为 ExpectedConditions 叠加是不可见的。

    invisibilityOfElementLocated
  • WebDriverWait wait1 = new WebDriverWait(driver, 10); wait1.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));

    使用 Permanent Overlay 直接在元素上发送 JavascriptExecutor

    click