在已经运行的selenium webdriver上设置能力
在硒测试步骤中(像点击按钮)我想阻止硒等待页面加载完成。我不能抛出加载异常,因为那时我不能再处理页面。 它可以做到这样的事情simmilar:在已经运行的selenium webdriver上设置能力
DesiredCapabilities dr = DesiredCapabilities.chrome();
dr.setCapability("pageLoadStrategy", "none");
WebDriver driver = new RemoteWebDriver(new URL("...."), dr);
我想要的是像 “dr.setCapability(” pageLoadStrategy “ ”无“);”但只是一个特定的步骤。
有没有人知道一种方法来做到这一点?
浏览器启动后,功能不再可编辑。 临时禁用等待的一种方法是使用脚本注入实现您自己的get
。
事情是这样的:
//
// loads the page and stops the loading without exception after 2 sec if
// the page is still loading.
//
load(driver, "https://httpbin.org/delay/10", 2000);
public static void load(WebDriver driver, String url, int timeout) {
((JavascriptExecutor)driver).executeScript(
"var url = arguments[0], timeout = arguments[1];"
"window.setTimeout(function(){window.location.href = url}, 1);" +
"var timer = window.setTimeout(window.stop, timeout);" +
"window.onload = function(){window.clearTimeout(timer)}; "
, url, timeout);
}
谢谢您的回答。如果我没有错,但与脚本的页面将停止加载..这不是笏我想要的。该页面继续加载,但我希望硒不在特定的步骤等待。 – FastDev
由于目前实施的硒,一旦我们通过DesiredCapabilities
类配置WebDriver
实例与我们的预期配置和初始化WebDriver
会议打开浏览器,我们不能更改功能运行时。
值得一提,不知何故,如果你能检索运行时功能你仍然无法改变他们回来。
所以,按顺序做出改变的pageLoadStrategy
你必须启动新的WebDriver
会议。
这里是与代理设置功能@JimEvans clear and concise answer(如10月24日'13在13:02):
当您为任何给定的驱动程序的代理,它是当时唯一的设定WebDriver会话已创建;它不能在运行时更改。即使您获得了创建的会话的功能,您也无法对其进行更改。所以答案是,不,如果你想使用不同的代理设置,你必须开始一个新的会话。
感谢,我看到那是不可能的,但创建一个新的webdriver是不是一个很好的选择,我也因为我不能说司机指向旧 – FastDev
我怀疑任何驱动程序现在允许控制功能,驱动程序启动后。所以我想这是不可能的AFAIK –