如何从Selenium Webdriver处理Chrome 53中的.jnlp下载文件操作

时间:2016-10-10 11:44:17

标签: google-chrome selenium selenium-webdriver automation jnlp

我正在尝试在Selenium Webdrvier 3.0 + Java 1.8 + Chrome 53中编写代码,以便在调用get(url)后需要下载并执行.jnlp文件的应用程序。我不确定这是否可以在Selenium webdriver中处理? 由于我是selenium的新手,任何处理这些Windows Pop的帮助或指导对我都非常有帮助。 下面是一段代码:

if(browser.contains("CHROME") || browser.equalsIgnoreCase("chrome"))
{

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--test-type");
    options.addArguments("--disable-extensions");                       
    capability = DesiredCapabilities.chrome();
    capability.setBrowserName("chrome");
    capability.setCapability(ChromeOptions.CAPABILITY, options);
}
capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

browserDriver = new RemoteWebDriver(new URL(nodeAddress), capability);
browserDriver.manage().timeouts().pageLoadTimeout(1000, TimeUnit.SECONDS);          
browserDriver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
browserDriver.manage().window().maximize();
browserDriver.get(applicationUrl);
logger.info("WebDriver successfully defined with Session ID:" +  browserDriver.getSessionId() + ", Page Title:" + browserDriver.getTitle() + " and URL: " + browserDriver.getCurrentUrl());

附图:http://i.stack.imgur.com/esfpk.jpg

2 个答案:

答案 0 :(得分:0)

您尝试点击的按钮是Chrome用户界面的一部分,而不是网页的一部分,因此Selenium无法与之互动。从谷歌搜索完成来看,这显然是people have reported as a bug的问题,并且没有一致的解决方法。

答案 1 :(得分:0)

我通过 Selenium + Python 找到了一种解决方法(但类似的事情在 Java 中也应该是可行的)。在 Python 中,我只需以编程方式单击 Chrome UI 中的通知即可下载和安装 jnlp 文件(在 win32api 和 win32con 的帮助下 - 我只需要它用于 Win)。查看详情here 网页抓取现在对我来说容易多了 :)