我在使用 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>
“跳过”按钮是我试图点击的按钮。
最佳答案
我会在该按钮上执行javascript
。我假设您正在使用 selenium java 绑定(bind),因为您从未提到过这一点。
JavascriptExecutor js =(JavascriptExecutor) driver;
js.executeScript("document.querySelector(\"[type='submit'][class='btn btn-default btn-lg']\").click();");
此脚本应单击Skip
按钮
实际上,我从未遇到过页面无法完成加载的任何问题。这就是为什么我很好奇您在导航到 url
时是否做了不应该做的事情。
关于selenium - 如何在页面完全加载之前启动点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28312020/