我遇到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;按钮是我要点击的按钮。
答案 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和等待页面中存在的元素 隐含等待。
这意味着在这种情况下您无法确保驱动程序的行为。因此,稳定测试可能是在加载页面时可以使用的测试。