Как смоделировать нажатие клавиши «ENTER» в Python? - PullRequest
0 голосов
/ 07 февраля 2020

На изображении ниже я хочу смоделировать нажатие клавиши «ВВОД» или «ВОЗВРАТ».

enter image description here

Код html для этого:

<a href="javascript:doOuvrir(1350);"> <img src="images/calendrier_plus.gif" bordercolor="#ff0000" valign="middle" title="Ouvrir prochaine semaine" alt="Ouvrir prochaine semaine" width="17" border="3" align="middle"> </a>

In Python I написал этот код:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()
action = ActionChains(driver)
driver.find_element_by_xpath("//a[@href='javascript:doOuvrir(1350);']").click()
time.sleep(5) 
action.key_down(Keys.RETURN).perform()

Когда он работает правильно, открывается новая страница, но в текущей ситуации у меня появляется следующее сообщение об ошибке:

> Traceback (most recent call last):
File "C:\Users\xxxx\Documents\Projets\Hagrid\hagrid.py", line 65, in <module>
action.key_down(Keys.RETURN).perform()
File "C:\Applications\Python\Python38-32\lib\site-packages\selenium\webdriver\common action_chains.py", line 80, in perform
self.w3c_actions.perform()
File "C:\Applications\Python\Python38-32\lib\site-packages\selenium\webdriver\common\actions\action_builder.py", line 76, in perform
self.driver.execute(Command.W3C_ACTIONS, enc)
File "C:\Applications\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Applications\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 241, in check_response
raise exception_class(message, screen, stacktrace, alert_text)
selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None
Message: Dismissed user prompt dialog: Vous confirmez vouloir ouvrir une nouvelle semaine?

Не могли бы вы, пожалуйста, помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 04 мая 2020

https://nitratine.net/blog/post/simulate-keypresses-in-python/

Эта ссылка вам очень поможет, вот код:

from pynput.keyboard import Key, Controller
import time

keyboard = Controller()


time.sleep(2)
keyboard.press(Key.enter)

keyboard.release(Key.enter)

time.sleep необязательно

Я не проверяю переполнение стека, поэтому, если у вас есть проблемы с этим, посетите веб-сайт или документацию для pynput: https://pynput.readthedocs.io/en/latest/keyboard.html#controlling -the-клавиатура

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