Невозможно обработать всплывающие окна Windows 10 с помощью класса Robot - PullRequest
2 голосов
/ 29 апреля 2019

Я пытаюсь запустить приведенный ниже код в Internet Explorer, Windows 10.

----------------------------Test --------------- открытый класс SampleTest {

public static void main(String args[]) throws AWTException, InterruptedException{
    System.setProperty("webdriver.ie.driver", "path//IEDriverServer.exe");
    WebDriver driver = new InternetExplorerDriver();
    driver.get("url");
    HelperMethods.validateSplash();
}

} `-------------------- HelperMethods -----------

`открытый класс HelperMethods {

public static void validateSplash() throws AWTException, InterruptedException{
    HelperMethods.ctrlV("username");
    HelperMethods.pressTab();
    Thread.sleep(2000);
    HelperMethods.ctrlV("password");
    HelperMethods.pressEnter();
}

private static void ctrlV(String stringToPaste) throws AWTException{
    Robot robot = new Robot();
    StringSelection strToPaste = new StringSelection(stringToPaste);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(strToPaste, null);            
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
}

private static void pressTab() throws AWTException{
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);
}

private static void pressEnter() throws AWTException{
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
}

}`

Когда я пытаюсь запустить вышескрипт в Windows 7 (Desktop), работает нормально.Но когда я пытаюсь запустить то же самое в Windows 10 (ноутбук), он не работает.

Может кто-нибудь, пожалуйста, помогите.Спасибо

1 Ответ

2 голосов
/ 30 апреля 2019

Вместо использования хака, подобного классам Java Robot для Basic Auth, вы действительно хотите использовать прокси.Вот решение, использующее browserup proxy .

Прежде всего добавьте зависимость прокси browserup в ваш файл maven POM.xml (это предполагает, что вы используете maven, хотя это довольно стандартно для Java-проектов, хотя).

<dependency>
    <groupId>com.browserup</groupId>
    <artifactId>browserup-proxy-core</artifactId>
    <version>1.0.0</version>
    <scope>test</scope>
</dependency>

Затем используйте прокси-сервер browserup в своих тестах.Прежде всего, вам нужно будет выполнить следующие операции импорта:

import com.browserup.bup.BrowserUpProxy;
import com.browserup.bup.BrowserUpProxyServer;
import com.browserup.bup.client.ClientUtil;
import com.browserup.bup.proxy.auth.AuthType;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.ie.InternetExplorerOptions;

Затем приведен пример теста, который вы сможете скопировать / вставить и попробовать:

// Start up the browserup proxy server
BrowserUpProxy browserUpProxyServer = new BrowserUpProxyServer();
//Specify domain that uses basic auth, then the username and password followed by auth type
browserUpProxyServer.autoAuthorization("the-internet.herokuapp.com", "admin", "admin", AuthType.BASIC);
browserUpProxyServer.start();
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(browserUpProxyServer);

// Configure IEDriver to use the browserup proxy
InternetExplorerOptions ieOptions = new InternetExplorerOptions();
ieOptions.setProxy(seleniumProxy);
WebDriver driver = new InternetExplorerDriver(ieOptions);

//Go to a site with basic auth enabled and check it all works
driver.get("https://the-internet.herokuapp.com/basic_auth");

//Clean up after test has finished
driver.quit();
browserUpProxyServer.stop();

Это должно быть относительно простой задачей - настроить линию автоавторизации, чтобы она работала для вашего домена и ваших базовых учетных данных.

Преимущества использования прокси:

  • Это кросс-браузерная совместимость
  • Это кросс-совместимая ОС
  • Это будет работать с локальнымии удаленные экземпляры WebDriver (однако для удаленных экземпляров машине, на которой работает браузер, потребуется доступ к машине, на которой работает прокси-сервер, и вам необходимо указать действительный IP-адрес для прокси, а не localhost)
  • Это гораздо меньше кода, чем различные хаки класса Robot, чтобы попробовать и нажать на разные диалоговые окна уровня ОС.
...