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

时间:2015-02-04 01:36:10

标签: selenium selenium-webdriver

我遇到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>

&#34; Skip&#34;按钮是我要点击的按钮。

2 个答案:

答案 0 :(得分:2)

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

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

此脚本应点击Skip按钮

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

答案 1 :(得分:0)

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

  

取决于几个因素,包括OS /浏览器组合,   WebDriver可能会也可能不会等待页面加载。在一些   在某些情况下,WebDriver可能会在页面出现之前返回控件   装完,甚至开始装货。为了确保稳健性,您需要   使用Explicit和等待页面中存在的元素   隐含等待。

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