【问题标题】:Java Selenium Webdriver chrome can't find elementJava Selenium Webdriver chrome找不到元素
【发布时间】:2016-04-17 18:01:26
【问题描述】:

我正在尝试单击容器内的卡片。我尝试过 id、class、xpath,但没有找到。我不确定还有什么可以尝试获得该元素。

这是我要点击的元素的代码:

<div class="mtable" id="w-card" status="83" entertainer="1799">
    <div class="mtable-cell wc-gray-dark" id="widget-icon" style="border-color: ">
        <div class="caption"><img src="/images/default_entertainer_image.jpg" class="caption-img"></div>
    </div>
    <div class="mtable-cell wc-white" id="widget-text">
        <div>
            <h6>
                <span id="status-83" class="label label-default ">
                    <span class="entertainer-name">Testing</span>
                    <br>Testing100
                    <br>Last Seen: never
                </span>
            </h6>
        </div>
        <div id="timers">
            <div id="lastChange" class="pull-left"></div>
            <div id="circle" class="pull-right"></div>
        </div>
    </div>
</div>

硒代码:

driver.findElement(By.xpath("//*[@id=\"w-card\"]")).click();

我已经对 div 的所有子元素进行了显示测试,webdriver 也找到了它,但说它没有显示?

【问题讨论】:

  • 有没有错误?它是什么?您是否考虑过单击其中一个子元素?
  • 我收到的错误信息是 org.openqa.selenium.ElementNotVisibleException: element not visible
  • 我运行 isDisplayed 并返回它找到了元素但说它没有被显示?

标签: java selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

也许有一个iframe,所以切换到那个框架。

        `driver.switchTo().frame(driver.findElement(by));`

【讨论】:

    【解决方案2】:

    我认为您的 Div 不可见。因此,很少有事情会以 3 秒的间隔运行 for 循环,进行 10 次迭代,并且在检查 isDisplayed() 条件的内部,它是否会显示出来。此外,如果一切都失败了,那么尝试 javascript click..thats 从不推荐,但仍然可以救我们

    【讨论】:

    • 我运行了一个 isDisplayed 测试,它返回它正在查找 div 但它没有被显示。
    • 好的..你可以尝试点击你试图定位的 div 的内部元素之一..如果没有其他工作,那么最后一个选项应该是 javascript,它肯定会工作..但从不推荐
    【解决方案3】:

    使用Explicit Wait 等待元素可点击。

    WebDriverWait driverWait = new WebDriverWait(driver, timeOutInSeconds);
    wait.until(ExpectedConditions.elementToBeClickable(By.id("w-card"))).click();
    

    【讨论】:

      【解决方案4】:

      尝试使用显式等待

      WebDriverWait wait = new WebDriverWait(driver, 20);
      wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("w-card"))).click();
      

      这将等待最多 20 秒以使元素可见,然后再单击它。

      【讨论】:

        猜你喜欢
        • 2017-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-11
        • 2016-09-07
        • 2017-10-24
        • 1970-01-01
        相关资源
        最近更新 更多