以下是场景:
- 单击打开新选项卡的链接
- 调用getWindowHandles((并切换到新选项卡
- 使用JavaScript执行程序打开打印弹出窗口
- 再次调用getWindowHandles((将焦点切换到打印弹出窗口
第二次getWindowHandles((调用导致脚本超时,我不知道原因。有人能帮我弄清楚第二个电话是怎么回事吗?在步骤4之前,一切正常
link.click();
ArrayList<String> handles2 = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(handles2.get(1));
((JavascriptExecutor)driver).executeScript("window.print()");
ArrayList<String> handles3 = new ArrayList<String> (driver.getWindowHandles());
也许有用的信息:
错误消息:
org.openqa.selenium.ScriptTimeoutException:脚本超时(会话信息:chrome=86.0.4240.183(内部版本信息:版本:3.141.59,修订:e82be7d358,时间:2018-11-14T08:17:03系统信息:主机:",ip:",os.name:"Windows 10",os.arch:"amd64",os.version:"10.0",java.version:"1.8.0_261"驾驶员信息:org.openqa.selenium.chrome.ChromeDriver功能{acceptInsecureCerts:true,browserName:chrome,browserVersion:86.0.4240.183,chrome:{chromedriverVersion:86.0.4 240.22(…,userDataDir:C:\Users\AppData\L…},goog:chromeOptions:{debuggerAddress:localhost:},javascriptEnabled:true,networkConnectionEnabled:false,pageLoadStrategy:normal,platform:WINDOWS,platformName:WINDOWS,proxy:proxy((,setWindowRect:true,strictFileInteractiability:false,超时:{隐式:0,页面加载:300000,脚本:30000},unhandledPromptBehavior:解除并通知,webauthn:virtualAuthenticators:true}
问题是打印对话框导致主线程锁定。
您可以按照@pcalkins的建议使用Robot类。但是我使用了SetTimeout函数。
参考:ChromeDriver-尝试使用javascript 打印页面时超时