Как сфокусироваться на диалоговом окне файла, используя Selenium для выбора файла - PullRequest
0 голосов
/ 26 февраля 2020

Я sh чтобы загрузить файл на указанный c сайт, который я должен проверить. Как сделать, чтобы Selenium фокусировался на диалоговом окне файла?

Когда я пытаюсь отправлять штрихи клавиатуры - штрихи go на сайт, а не в диалоговое окно нового файла.

Мой код:

 Actions builder = new Actions(browser);       
    builder.keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).sendKeys(Keys.BACK_SPACE);
    builder.sendKeys(keyBoardText).perform();

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Сегодня я узнал, что я могу использовать Actions.sendKeys () только для веб-элемента, на который я нажал.

Если мне просто нужно нажать на клавиатуре - мне нужно использовать объект Robot.

Этот код решил мою проблему:

    softAsserter = new SoftAsserter(testParameters);
    String textToType = testParameters.get("actionData");
    Robot robot = null;
    try {
        robot = new Robot();
        for (char c : textToType.toCharArray()) {
            int keyCode = KeyEvent.getExtendedKeyCodeForChar(c);
            if (KeyEvent.CHAR_UNDEFINED == keyCode) {
                logger.error("Key code not found for character '" + c + "'");
            }
            else {
                try {
                    robot.keyPress(keyCode);
                    robot.delay(10);
                    robot.keyRelease(keyCode);
                    robot.delay(10);
                }
                catch (Exception e) {
                   if (c=='_') {
                       robot.keyPress(KeyEvent.VK_SHIFT);
                       robot.keyPress(KeyEvent.VK_MINUS);
                       robot.keyRelease(KeyEvent.VK_MINUS);
                       robot.keyRelease(KeyEvent.VK_SHIFT);
                   }
                   if (c==':') {
                       robot.keyPress(KeyEvent.VK_SHIFT);
                       robot.keyPress(KeyEvent.VK_SEMICOLON);
                       robot.keyRelease(KeyEvent.VK_SEMICOLON);
                       robot.keyRelease(KeyEvent.VK_SHIFT);
                   }
                }
            }
        }
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyPress(KeyEvent.VK_ENTER);
    }
    catch (Exception ex) {
        logger.error(ex.getMessage());
    }
0 голосов
/ 26 февраля 2020

Есть несколько способов загрузки файлов. Обычно мы загружаем файлы, не нажимая кнопку загрузки на веб-сайте, и открываем диалоговое окно файлов.

В Selenium вам необходимо найти элемент загрузки на странице сайта и отправить локальное местоположение файла.

driver.findElement(By.id("Upload Element")).sendKeys("PathToFile");

Если вы предпочитаете открыть диалоговое окно файла, то я предлагаю вам использовать среду Robot.

   Robot robot = new Robot();
   robot.keyPress(KeyEvent.VK_ENTER);
   robot.keyRelease(KeyEvent.VK_ENTER);
   robot.keyPress(KeyEvent.VK_CONTROL);
   robot.keyPress(KeyEvent.VK_V);
   robot.keyRelease(KeyEvent.VK_V);
   robot.keyRelease(KeyEvent.VK_CONTROL);
   robot.keyPress(KeyEvent.VK_ENTER);
   robot.keyRelease(KeyEvent.VK_ENTER);

Но, пожалуйста, учтите, что когда вы используете среду Robot, вам нужно отпустить мышь, потому что она содержит курсор мыши.

Здесь вы можете найти различные способы загрузки файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...