1. 问题描述
使用Selenium webDriver 点击页面一个按钮,出现Print windows窗口,这时候 程序会挂住在Click操作上.
解决办法:
使用线程结合AutoItX.jar去关闭windows窗口,这样Selenium就会继续执行下面的测试脚本.
具体实现代码:
// Click the Print button in the Document Action Bar.
public void closePrint() {
Thread thread = new Thread() {
public void run() {
try {
SeleniumUtil.waitForFixedMilliseconds(2000);
SeleniumUtil.isDisappear(ProQuestHCPPDocumentViewPageUtil.PRINT, 30);
Autoit autoit = new Autoit();
AutoItX x = autoit.getAuoit();
x.winActivate("Print");
x.winWaitActive("Print", "", 20);
// Enter 3
x.controlClick("Print", "", "2");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
SeleniumUtil.clickByJs(ProQuestHCPPDocumentViewPageUtil.PRINT);
try {
thread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public class Autoit {
public String jvmBitVersion() {
return System.getProperty("sun.arch.data.model");
}
public Autoit() {
jvmBitVersion();
String jacobDllVersionToUse;
if (jvmBitVersion().contains("32")) {
jacobDllVersionToUse = "jacob-1.18-M2-x86.dll";
} else {
jacobDllVersionToUse = "jacob-1.18-M2-x64.dll";
}
File file = new File("src/test/resources/configuration/dll", jacobDllVersionToUse);
System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
}
public AutoItX getAuoit(){
return new AutoItX();
}
}
使用到的资源文件: jacob-1.18-M2-x86.dll && jacob-1.18-M2-x64.dll , AutoItX4Java.jar, jacob.jar(注意:必须安装Autoit )