如何在页面完全加载之前启动点击

How to initiate click before page is fully loaded

我在使用 Selenium webdriver 时遇到问题,页面继续加载,即使页面明显已加载并且我想在页面上单击的按钮现在可用。

我已经使用隐式和显式等待页面加载但没有成功。

如何强制驱动程序单击尚未完成加载的页面上的按钮?

我的显式等待代码片段:

    myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("(//button[@type='submit'])[2]")));
    myDynamicElement.click();

谢谢

已添加 HTML:

    </div>

    <div class="first-message-form">

        <form role="form" action="/signup/first-message" method="POST">
            <div class="form-group">

                <textarea id="message_message" name="message[message]"    class="form-control"></textarea>

            </div>
            <div class="form-group">
                <button type="submit" class="btn btn-primary btn-lg">Post to others</button>
                <button type="submit" class="btn btn-default btn-lg">Skip</button>
            </div>
        </form>

    </div>

</div>

"Skip" 按钮是我要单击的按钮。

我会在该按钮上执行 javascript。我假设您正在使用 selenium java 绑定,因为您从未提到过。

JavascriptExecutor js =(JavascriptExecutor) driver;
    js.executeScript("document.querySelector(\"[type='submit'][class='btn btn-default btn-lg']\").click();");

此脚本应点击 Skip 按钮

我实际上从未遇到过页面无法完成加载的任何问题。这就是为什么我很想知道您在导航到 url 时是否正在做不应该做的事情。

在 WebDriver documentation 中,您可以找到以下内容:

Dependent on several factors, including the OS/Browser combination, WebDriver may or may not wait for the page to load. In some circumstances, WebDriver may return control before the page has finished, or even started, loading. To ensure robustness, you need to wait for the element(s) to exist in the page using Explicit and Implicit Waits.

这意味着您无法确保驱动程序在这种情况下的行为。因此,稳定测试可能会在页面加载时起作用。