【问题标题】:Save As PDF Chrome using selenium使用硒另存为 PDF Chrome
【发布时间】:2017-07-26 11:12:00
【问题描述】:

我希望使用 selenium 自动执行 Chrome 的“另存为 PDF”。 AFAIK 开箱即用的 Selenium 不支持它。因此,我正在尝试编写自己的。我有一个问题。实际上,单击我网页中的“打印”按钮会打开一个带有可打印区域的新窗口。我正在尝试使用 SwitchTo 切换到此窗口。但它总是超时。

【问题讨论】:

  • 您需要使用 AutoIT bec。它的 Windows 实例无法通过 selenium ref 处理 guru99.com/use-autoit-selenium.html
  • 但是我在`driver.WindowHandles`中得到了句柄,只有我无法切换。
  • 你在用 CLT+P 做什么?
  • 网页中没有按钮。它基本上在浏览器中打开一个窗口。我正在尝试获取新打开的窗口。
  • 你能分享你的链接或截图吗.. 会更清楚

标签: google-chrome selenium


【解决方案1】:

您可以添加 options.AddArgument("--kiosk-printing");让它自动点击打印按钮。

这对我有用,但我在将打印机设置为另存为 PDF 时遇到问题。它正在打印到打印机。

【讨论】:

  • 这对我不起作用,我仍然得到打印预览页面。使用 Chrome 81
【解决方案2】:

您可以尝试禁用 Chrome PDF 插件并下载具有所需功能的提示窗口。像这样的:

DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability("download.default_directory","C:");
cap.setCapability("download.prompt_for_download","false");
cap.setCapability("directory_upgrade","true");
cap.setCapability("plugins.plugins_disabled","Chrome PDF Viewer");

WebDriver driver = new ChromeDriver(cap);

【讨论】:

  • 实际上是窗口句柄的问题。我看了一下javascript。单击按钮时,它会使用 Window.Open 打开另一个窗口。现在 selenium 无法切换到这个窗口。虽然它正在通过 driver.WindowHandles 获取句柄。
  • for( String e : driver.getWindowHandles()){ System.out.println("Window handle: " + e)}; 会返回什么?而你无法执行:driver.switchTo().window("Number of window handle as string")?
  • 是的,我正在获取窗口句柄字符串。 driver.switchTo().window("Number of window handle as string") 挂起执行并抛出超时错误。
猜你喜欢
  • 1970-01-01
  • 2020-08-31
  • 2014-09-20
  • 2013-03-27
  • 2016-07-16
  • 2012-08-22
  • 2021-08-26
  • 2019-07-01
  • 2019-07-23
相关资源
最近更新 更多