Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法访问Chrome';使用Selenium的PDF预览窗口_Java_Selenium_Google Chrome_Selenium Chromedriver - Fatal编程技术网

Java 无法访问Chrome';使用Selenium的PDF预览窗口

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.

我的应用程序中有一个打印按钮。此打印按钮在新窗口中打开PDF。在这个窗口的顶部是打印图标,点击它可以打开Chrome的打印预览窗口,在这里可以选择“另存为PDF”选项来保存PDF文件

我想在selenium中测试这个流

---我点击网页上的打印按钮。这将打开一个带有PDF的新Chrome窗口

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")));