在已经运行的selenium webdriver上设置能力

在已经运行的selenium webdriver上设置能力

问题描述:

在硒测试步骤中(像点击按钮)我想阻止硒等待页面加载完成。我不能抛出加载异常,因为那时我不能再处理页面。 它可以做到这样的事情simmilar:在已经运行的selenium webdriver上设置能力

DesiredCapabilities dr = DesiredCapabilities.chrome(); 
dr.setCapability("pageLoadStrategy", "none"); 
WebDriver driver = new RemoteWebDriver(new URL("...."), dr); 

我想要的是像 “dr.setCapability(” pageLoadStrategy “ ”无“);”但只是一个特定的步骤。

有没有人知道一种方法来做到这一点?

+0

我怀疑任何驱动程序现在允许控制功能,驱动程序启动后。所以我想这是不可能的AFAIK –

浏览器启动后,功能不再可编辑。 临时禁用等待的一种方法是使用脚本注入实现您自己的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); 
} 
+0

谢谢您的回答。如果我没有错,但与脚本的页面将停止加载..这不是笏我想要的。该页面继续加载,但我希望硒不在特定的步骤等待。 – FastDev

由于目前实施的硒,一旦我们通过DesiredCapabilities类配置WebDriver实例与我们的预期配置和初始化WebDriver会议打开浏览器,我们不能更改功能运行时。

值得一提,不知何故,如果你能检索运行时功能你仍然无法改变他们回来。

所以,按顺序做出改变的pageLoadStrategy你必须启动新的WebDriver会议。

这里是与代理设置功能@JimEvans clear and concise answer(如10月24日'13在13:02):

当您为任何给定的驱动程序的代理,它是当时唯一的设定WebDriver会话已创建;它不能在运行时更改。即使您获得了创建的会话的功能,您也无法对其进行更改。所以答案是,不,如果你想使用不同的代理设置,你必须开始一个新的会话。

+0

感谢,我看到那是不可能的,但创建一个新的webdriver是不是一个很好的选择,我也因为我不能说司机指向旧 – FastDev