selenium.interactions.Action класс для копирования / вырезания / вставки не работает в браузере Chrome - Selenium Test Automation - PullRequest
1 голос
/ 20 марта 2019

Мне нужно скопировать объект (текст / форму) в моем приложении и вставить его в другую область.

В этом случае я должен вставить независимо от веб-элемента. Поэтому я не могу использовать это -

driver.findElement(By.id("")).sendKeys(Keys.chord(Keys.CONTROL,"v"));

Поэтому я использую класс Actions в селене - selenium.interactions.Actions

actions.keyDown(command).sendKeys("c").keyUp(command).build().perform();

Этот метод не работает Chrome72 и chromedriver 72.

Я сталкиваюсь с этой проблемой уже много месяцев. И поищите решения в Интернете, и многие сайты говорят об этом -

https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/5946

Но не удалось найти никаких ответов, и проблема все еще существует в самых последних версиях Chrome и chromedriver.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Я бы предложил использовать клавиши Control + в вашем коде перед копированием, поскольку вам может понадобиться сначала выделить весь текст, а затем скопировать текст.

driver.findElement(By.id("xyz")).sendKeys(Keys.chord(Keys.CONTROL, "a"));
driver.findElement(By.id("xyz")).sendKeys(Keys.chord(Keys.CONTROL, "c"));
0 голосов
/ 20 марта 2019

Похоже, что в G Chrome есть слой, который предотвращает эти ярлыки:

https://bugs.chromium.org/p/chromedriver/issues/detail?id=581

И это НЕ будет исправлено.

Может быть, вымог бы найти решение.В моем случае для Ctrl + TI используйте

((JavascriptExecutor) driver).executeScript("window.open('about:blank', '_blank');");

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

// Create instance of Robot class
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);

Надеюсь, это поможет.Как я уже сказал, это не работает каждый раз;)

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