Думал что закончил с Selenium, как выяснилось нет. Поэтому выйдет еще пару статей по данной библиотеке.
Предисловие.
В данном уроке мы научимся кликать по координатам окна с помощью Selenium. Данная возможность будет полезна, при написании ботов для онлайн игр.
Приступаем.
Для работы с мышью нам потребуется модуль ActionChains.
ActionChains — это модуль позволяющий производить низкоуровневые операции такие как:
- движение мышки
- нажатие мышки (ЛКМ)
- работа с контекстным меню (ПКМ)
При вызове методов класса ActionChains, методы помещаются в очередь. Вызываются они методом perform(), в порядке очереди. Подробнее в документации.
Рисуем точку на экране.
Перепишите следующий код:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome('chromedriver.exe')
driver.set_window_size(500, 500)
driver.get('http://paintonline.editaraudio.com/')
ActionChains(driver).move_by_offset(250, 250).click().perform()
Сохраните данный код, поместив в одной папке с chromedriver.exe (браузер Google Chome должен быть установлен). Разберем код.
from selenium.webdriver.common.action_chains import ActionChains
Импортируем ActionChains
driver.set_window_size(500, 500)
Устанавливаем размер окна браузера в 500×500 пикселей.
driver.get('http://paintonline.editaraudio.com/')
Заходим на сайт http://paintonline.editaraudio.com/
ActionChains(driver).move_by_offset(250, 250).click().perform()
Здесь мы делаем последовательность действий.
- move_by_offset(250, 250) — передвигаем курсор на 250 пикселей вправо и 250 пикселей вниз.
- click() — кликаем.
- perform() — выполняем все действия.
В итоге, мы нарисовали точку на экране.
Рисуем 2 точки на экране.
Добавьте следующие строки к себе в код:
ActionChains(driver).reset_actions()
ActionChains(driver).move_by_offset(250, 300).click().perform()
Здесь, мы сбросили положение курсора reset_actions(), теперь положение равно 0,0. Затем, кликнули по координатам (250, 300) тем самым, нарисовав точку на холсте.
Чертим линию на экране.
Удалите предыдущие вызовы ActionChains, и добавьте следующий.
ActionChains(driver).move_by_offset(250, 250).click_and_hold().move_by_offset(20, 20).perform()
Разберем каждое действие:
- move_by_offset(250, 250) — передвигаем курсор на координаты 250, 250
- click_and_hold() — зажимаем ЛКМ
- move_by_offset(20, 20) — двигаем курсор на 20 пикселей вправо, и 20 вниз, на координаты 270, 270.
- perform() — выполняем все действия.
В итоге, получилась диагональная линия.
Заключение
Используя ActionChains, можно написать бота, практически, для любой игры.
Начиная от кликеров, по типу alien worlds.
Заканчивая фермами, с возможностью drag_and_drop.