Клавиша робота не работает в режиме без головы - PullRequest
0 голосов
/ 04 октября 2019

Можно нажать клавишу 'v' на клавиатуре через робота, который работает нормально, как и ожидалось в режиме браузера, но не работает в режиме без головы.

Попытка циклически обработать список элементов и сделать снимок экрана после нажатия клавиши. Я использую класс Robot для нажатия символа 'v', который не работает, вместо этого он печатает v в выводе.

Я использую драйвер firefox- geckodriver-v0.24.0-win64 и версия моего браузера v69.0.1.

        List<WebElement> eleq = driver.findElements(By.cssSelector(".class"));
        JavascriptExecutor js = ((JavascriptExecutor) driver);
        for(WebElement e: eleq){
            js.executeScript("arguments[0].scrollIntoView(true);", e);
            Actions builder = new Actions(driver);
            Action seriesOfActions = builder
                    .moveToElement(e)
                    .build();
            seriesOfActions.perform();
            Robot robot = new Robot();
            robot.keyPress(KeyEvent.VK_V); 
            Thread.sleep(1000);
            Date d =new Date();
            File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
            FileUtils.copyFile(screenshot, new File(d.toString().replace(":", "_")+".png"));
            Thread.sleep(3000);
            robot.keyPress(KeyEvent.VK_V);
        }

Хотелось бы узнать, есть ли какие-либо альтернативы нажатию клавиш в JavaСелен, кроме Робота, так как большая часть моих поисков привела к тому, что Робот не работал без головы.

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Конечно, робот не будет делать событие, не видя никакой другой зависимости.

Даже если вы свернете экран браузера автоматизации, он не будет работать, поскольку он независим от всего

Вот почему использование робота не рекомендуется в автоматизации.

Вам нужно определить другой способ выполнить ваш шаг

, вы можете сделать что-то вроде ниже:

String selectAll = Keys.chord(Keys.CONTROL, "a");
driver.findElement(By.id("your locator")).sendKeys(selectAll);
0 голосов
/ 14 октября 2019

Я достиг этого, используя Действия в селене.

...