java - 打印对话框不允许在 selenium 中执行下一个代码

标签 java selenium webdriver

我正在使用的代码如下。第一行单击“打印按钮”,打开“打印”对话框。打开后,我期望控制台输出“发送 Esc 键 - 开始”,然后执行机器人、操作、警报关闭、窗口切换等操作之一发生(基于未注释的代码)。但是,控制台不会打印任何内容,除非我在打印对话框中单击“取消”。因此,一旦我单击“取消”,系统输出就会打印消息,执行操作(并且没有任何有用的事情发生)由于这些操作),然后打印另一个控制台消息。

我的问题分为两部分。 A。为什么编译器(或程序)不移至下一行? b.我该如何处理这个打印对话框? (阅读了互联网上的所有文章,尝试了建议的方法,但没有任何效果)。

driver.findElement(By.id("PrintButton")).click();
System.out.println("Sending Esc key - Start");
/*Robot r = new Robot();
r.delay(10000);
r.keyPress(KeyEvent.VK_ESCAPE);
r.keyPress(KeyEvent.VK_ESCAPE);
r.keyPress(KeyEvent.VK_ESCAPE);
*/
/*Actions a = new Actions(driver).sendKeys(Keys.CANCEL);*/
/*driver.switchTo().alert().dismiss();*/
/*List<String> handles = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(handles.get(handles.size()-1));*/
System.out.println("Sending Esc key - done");

最佳答案

我在 ChromeDriver 上遇到了同样的问题,发现唯一的方法是以异步方式使用 JavascriptExecutor 单击打印按钮。

WebElelement print_button = driver.findElement(By.id("PrintButton"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("var elem=arguments[0]; setTimeout(function() {elem.click();}, 100)", print_button);

灵感来自this tread

关于java - 打印对话框不允许在 selenium 中执行下一个代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29252955/

相关文章:

java - 从 Eclipse RCP 中的向导调用复杂操作的正确方法是什么?

javascript - 使用 JavaScript 使用 Selenium 滚动到网页上的元素

selenium - 为什么我们不写 RemoteWebdriver driver = new ChromeDriver();

java - 如何有效改变WebDriver对象的浏览器名称?

java - Java解释器和编译器规则冲突

java - 缓冲图像动画代码无法正确重画

java - While 循环变量赋值给 Runnable

python - 如何使用 Python 在 Selenium 中为给定的 HTML 构建 xpath

java - Junit4 与 Jmeter 的集成

python - Linkedin 抓取工具提取技能