簡體   English   中英

Selenium Webdriver在使用Java的Robot類時凍結

[英]Selenium Webdriver freezes up while using Java's Robot class

我正在進行一項自動測試,該測試需要在Internet Explorer中打開一個文檔。 腳本工作正常,直到單擊了指向文檔的鏈接之后,這將啟動如下所示的討厭的IE彈出窗口

在此處輸入圖片說明

由於無法使用Webdriver專注於窗口,因此我嘗試使用Robot.java發送鍵“ Alt + O”,該鍵可以手動正常運行,但是在執行時會死鎖。 我的假設是與Selenium / Robot.java有一些不兼容,但由於陷入僵局而無法生成任何日志,因此我對此感到困惑。 請不要建議使用AutoIT,因為出於某些愚蠢的原因,我的安全分析師不會允許我使用它。 任何幫助深表感謝。

工具:

  1. 硒服務器獨立2.41.0
  2. IEDriverServer(32位版本)
  3. Internet Explorer版本= 9
  4. 腳本是用Java編寫的

MyRobot.java

public class MyRobot {

private static Robot robot;

public static void sendVirtualKeyCombination(int... keyEvents) {

    try {

        robot = new Robot();
        robot.setAutoDelay(1000);

        // Press key combination
        for (int keyEvent : keyEvents) {
            System.out.println("Pressing " + KeyEvent.getKeyText(keyEvent));
            robot.keyPress(keyEvent);
        }

    } catch (AWTException e) {
        e.printStackTrace();
    } finally {

        // Release all keys
        for (int keyEvent : keyEvents) {
            System.out.println("Releasing " + KeyEvent.getKeyText(keyEvent));
            robot.keyRelease(keyEvent);
        }
    }

}
}

MyRobot調用

MyRobot.sendVirtualKeyCombination(KeyEvent.VK_Alt, KeyEvent.VK_O);

按下按鍵后半秒鍾嘗試釋放按鍵。 該錯誤可能是由於按下和釋放鍵之間的延遲很小。

// Press key combination
for (int keyEvent : keyEvents) {
    System.out.println("Pressing " + KeyEvent.getKeyText(keyEvent));
    robot.keyPress(keyEvent);
    }

    thread.sleep(500)

for (int keyEvent : keyEvents) {
    System.out.println("Releasing " + KeyEvent.getKeyText(keyEvent));
    robot.keyRelease(keyEvent);
    }

我在Firefox中遇到了同樣的問題。 嘗試使用線程。 啟動兩個線程,第一個用於打開彈出按鈕。 現在事情凍結了。 現在,在第二個線程中稍等片刻,然后執行發送密鑰。

希望這行得通。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM