我发现了一个问题,我将使用谷歌浏览器单击网页内的指向 PDF 文档的链接。以前,当我单击链接时,PDF 文档会加载到新选项卡中。然后我会围绕文档执行一些验证。
最近,测试开始失败,因为当我单击 PDF 文档的链接时,它会下载 PDF 文件而不是在新选项卡中打开它。我假设这个问题最近是由于 chrome 或 chrome 驱动程序的更新而发生的。
如果我手动检查链接,即不通过 chrome 驱动程序实例,那么它将在新选项卡中打开就好了。有没有人遇到过这个问题?
我发现了一个问题,我将使用谷歌浏览器单击网页内的指向 PDF 文档的链接。以前,当我单击链接时,PDF 文档会加载到新选项卡中。然后我会围绕文档执行一些验证。
最近,测试开始失败,因为当我单击 PDF 文档的链接时,它会下载 PDF 文件而不是在新选项卡中打开它。我假设这个问题最近是由于 chrome 或 chrome 驱动程序的更新而发生的。
如果我手动检查链接,即不通过 chrome 驱动程序实例,那么它将在新选项卡中打开就好了。有没有人遇到过这个问题?
要允许 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);
刚刚解决了一个类似的问题。这是我的 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
当你这样做时,你会收到一个警告:
您可以通过排除ignore-certificate-errors开关来删除它。
希望能帮助到你。
当我们在配置文件首选项中启用 Chrome PDF 查看器插件时,这可以正常工作:
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);