Selenium 點選button 出現Windows視窗時候Selenium會Hang住!!!
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 )