Java 无法访问Chrome';使用Selenium的PDF预览窗口
我的应用程序中有一个打印按钮。此打印按钮在新窗口中打开PDF。在这个窗口的顶部是打印图标,点击它可以打开Chrome的打印预览窗口,在这里可以选择“另存为PDF”选项来保存PDF文件 我想在selenium中测试这个流 ---我点击网页上的打印按钮。这将打开一个带有PDF的新Chrome窗口Java 无法访问Chrome';使用Selenium的PDF预览窗口,java,selenium,google-chrome,selenium-chromedriver,Java,Selenium,Google Chrome,Selenium Chromedriver,我的应用程序中有一个打印按钮。此打印按钮在新窗口中打开PDF。在这个窗口的顶部是打印图标,点击它可以打开Chrome的打印预览窗口,在这里可以选择“另存为PDF”选项来保存PDF文件 我想在selenium中测试这个流 ---我点击网页上的打印按钮。这将打开一个带有PDF的新Chrome窗口 driver.findElement(By.cssSelector("ID")).click(); ---我切换到新打开的Chrome窗口 driver.switchTo().window(driver.
driver.findElement(By.cssSelector("ID")).click();
---我切换到新打开的Chrome窗口
driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
我可以在日志中看到selenium确实正在切换到新窗口
---我试图打开新Chrome窗口的元素
driver.findElement(By.cssSelector("viewer-pdf-toolbar"))
这就是问题所在。Selenium无法与此新打开的窗口交互,并且找不到此元素。当我检查新打开的窗口时,我看到以下DOM结构-
<body>
<viewer-pdf-toolbar id="toolbar"></viewer-pdf-toolbar>
<div id="sizer" style="width: 735px; height: 1092px;"></div>
<viewer-password-screen id="password-screen"></viewer-password-screen>
...
..
.
</div>
因此驱动程序
将此视为页面源代码,而当我在同一窗口上执行检查
时,我会看到不同的DOM。为什么会这样?Chrome是否正在用最终DOM替换
标记?如何让selenium意识到这一变化
请帮忙 诱导
WebDriverWait
()并等待找到的元素的可见性以及下面的css选择器
new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#toolbar")));
更新:
new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.tagName("body")));
你真的想查看流量还是只想下载pdf?为此,您可以使用DesiredCapabilities。我必须检查流程并与之交互window@ArchitArora你在这方面有什么进展吗?你是怎么解决的?等待并不能解决问题。请参阅我刚才提到的“附加信息”部分added@ArchitArora:可以检查此条件是否有效new WebDriverWait(driver,20).until(ExpectedConditions.visibilityOfElementLocated(By.tagName(“body”))
@ArchitArora:很高兴知道它正在工作。我已经在回答部分更新了相同的内容。如果这解决了您的问题,请随时接受并投票支持它。但这并不能解决我的问题,我需要访问“查看器pdf toolbar”标记驱动程序.findelelement(By.cssSelector(“查看器pdf toolbar”))。司机看不见。这就是问题所在。
new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.tagName("body")));