Python для продолжения получения события клика от Javascript - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь разработать инструмент для пользователя, чтобы создать простой RPA для себя, записав нажатие в браузере. Используя библиотеку Selenium, я могу запустить прослушиватель событий javascript в браузере с возвратом щелкающего узла.

from selenium import webdriver


driver = webdriver.Chrome()

test = driver.get('https://www.google.com')

js_script = "var resp = arguments[0]; document.addEventListener('click', function(e) { resp(e.path);}, true)"
response = driver.execute_async_script(js_script)

print(response)

это позволяет записать только первый щелчок в браузере. Как продолжить прослушивание возврата события Javascript в Python каждый раз, когда в браузере срабатывает щелчок?

1 Ответ

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

«execute_async_script» ожидает обратного вызова от javascript.

Как только будет вызван ожидаемый (Python) обратный вызов «arguments [0]», даже если EventListener все еще работает на браузер, Python получил свой обратный вызов. Таким образом, выполняется функция execute_async_script.

Вы можете либо создать logi c в Python, который оценивает значение в ответе, и в соответствии с этим воссоздать другой скрипт или выполнить logi c напрямую. в Javascript что-то вроде: (пользователю нужно нажать «q» для завершения события)

js_script = """
//Callback function
var done = arguments[arguments.length - 1]; 
//Take all the events
var array_events = []

var retour = (e) => {
    array_events.push(e.path)
}

var quit = (key) => {
    console.log(array_events);
    (key.keyCode == 81 )? done(JSON.stringify(array_events)) : undefined
}
// Listen to the clicks
getPath = document.addEventListener("click", retour, true)
// Listen to the key "q" which means user has gathered all needed events
getKey = document.addEventListener("keydown", quit, true)

"""
response = driver.execute_async_script(js_script)
print(response)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...