Инициирование «печати» в Google chrome с использованием селена - PullRequest
0 голосов
/ 10 марта 2020


Мне трудно инициировать событие 'print' в Google chrome, используя Селен . Я попробовал все следующее как на OSX , так и на Windows, но безуспешно. Для OSX я заменил Keys.CONTROL на Keys.COMMAND / Keys.META.

driver = webdriver.Chrome()
driver.get("http://google.com")

# 1st try
actions = ActionChains(driver)
actions.move_to_element(driver.find_element_by_tag_name('body'))
actions.key_down(Keys.CONTROL).send_keys('p').key_up(Keys.CONTROL)
actions.perform()

# 2nd try
ActionChains(driver).key_down(Keys.CONTROL).send_keys('p').key_up(Keys.CONTROL).perform()

# 3rd try
ActionChains(driver).send_keys(Keys.CONTROL, "p").perform()

# 4th try
driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL + 'p')

Ничто из вышеперечисленного не сработало. Единственный работающий метод - это driver.execute_script("window.print()"), но это не то поведение, которое я ищу в этом случае.

Chrome версия драйвера 80.0.3987.106.

Есть идеи? Есть ли способ инициировать событие «печать» без использования горячих клавиш?

1 Ответ

0 голосов
/ 11 марта 2020

Несколько слов:

  • Вы не должны тестировать диалоговое окно печати , поскольку оно является частью функциональности браузера и не связано с вашим приложением.
  • Если ваш сценарий использования предназначен для тестирования браузера, но не веб-приложения, вы должны знать, что придерживаться ключевых событий не лучший вариант, как если бы / когда вы попали в ситуацию выполнения тестов в Selenium Grid или в любой форме Параллельное выполнение теста вы можете столкнуться с условием.

Решение

Таким образом, путь к go - это Window.print() функция вместо этого вы можете использовать любую из следующих стратегий:

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