chrome webdriver - PDF文档下载而不是在新标签页

时间:2015-04-22 10:47:55

标签: selenium-webdriver webdriver chrome-web-driver

我发现了一个问题,即我会使用谷歌浏览器点击网页内的链接到PDF文档。以前,当我单击链接时,PDF文档将加载到新选项卡中。然后我会围绕文档执行一些验证。

最近,测试开始失败,因为当我点击PDF文档的链接时,它会下载PDF文件而不是在新标签中打开它。我假设最近由于更新了chrome或chrome驱动程序而出现了问题。

如果我手动检查链接,而不是通过chrome驱动程序实例,那么它将在新选项卡中打开就好了。有没有人遇到过这个问题?

3 个答案:

答案 0 :(得分:2)

  1. 打开Chrome
  2. 转到chrome:// plugins /
  3. 检查以下插件是启用
  4. enter image description here

    要允许Selenium WebDriver中的所有插件,请尝试以下配置:

    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--always-authorize-plugins=true");
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    WebDriver driver = new ChromeDriver(capabilities);
    

    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setCapability("chrome.switches", Arrays.asList("--load-extension=/path/to/extension/directory"));
    WebDriver driver = new ChromeDriver(capabilities);
    

答案 1 :(得分:0)

刚刚解决了类似的问题。这是我的JS代码:

var webdriver = require('selenium-webdriver');
var chrome    = require('selenium-webdriver/chrome');

var options = new chrome.Options();
var builder = new webdriver.Builder();
var driver;

builder.withCapabilities(webdriver.Capabilities.chrome());

options = chrome.Options.fromCapabilities(builder.getCapabilities());
options.excludeSwitches('test-type','ignore-certificate-errors');

builder.setChromeOptions(options);

driver = builder.build();

driver.get('https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf');

// driver.quit();

排除测试类型开关是您问题的解决方法,如下所述:https://code.google.com/p/chromedriver/issues/detail?id=1081#c6

当你这样做时,你会收到警告:

Screenshot of warning 您可以通过排除 ignore-certificate-errors 开关来删除。

希望它有所帮助。

答案 2 :(得分:0)

当我们在个人资料首选项中启用Chrome PDF Viewer插件时,此工作正常:

HashMap<String, Object> plugin = new HashMap<String, Object>();
plugin.put("enabled", true);
plugin.put("name", "Chrome PDF Viewer");
HashMap<String, Object> prefs = new HashMap<String, Object>();
prefs.put("plugins.plugins_list", Arrays.asList(plugin));
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
ChromeDriver driver = new ChromeDriver(options);