Java Selenium Webdriver chrome 找不到元素

问题描述 投票:0回答:5

我正在尝试单击容器内的卡片。我尝试过 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 也找到了它,但说它没有显示?

java selenium selenium-webdriver selenium-chromedriver
5个回答
1
投票

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

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

0
投票

尝试使用显式等待

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

在单击该元素之前,将等待最多 20 秒以使该元素可见。


0
投票

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


0
投票

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

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

0
投票

首先尝试 move_to_element() 。鼠标悬停后可能会显示某些元素。

© www.soinside.com 2019 - 2024. All rights reserved.