Пишем бота на питон и Firefox (Selenium) для самых-самых новичков часть 2
Разбираем код первой части
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time
/* импортируем библиотеки для работы с браузером по средствам селениума. 2. позволяет имитировать нажатие клавиатуры. 3. выбор элементов DOM селектом. Об этом позже. А в конце библиотека времени для создания пауз. */
driver = webdriver.Firefox()
/*Определяем браузер. В данном случае это фаирфокс с драйвером для него*/
driver.get("https://golos.io/")
/*Открываем ссылку в браузере*/
Пишем что-то по сложнее
assert "Тайтл" in driver.title
/* проверка заголовка окна браузера. если совпадает то идет дальше*/
Теперь манипулируем с DOM
это независящий от платформы и языка программный интерфейс, позволяющий программам и скриптам получить доступ к содержимому HTML-, XHTML- и XML-документов, а также изменять содержимое, структуру и оформление таких документов.
Скажем так. Это вложенность элементов для работы с ними. Например тайтл лежит в тэге head, а h1 в body и тд.
Теперь нам надо это пощупать.
element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element = driver.find_element_by_xpath("//input[@id='passwd-id']")
по названиям функций можно понять по какому принципу мы ищем. Возьмем банальный пример
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
'''проверяем тайтл'''
elem = driver.find_element_by_name("q")
'''ищем поиск'''
elem.send_keys("pycon")
''' вставляем текст '''
elem.send_keys(Keys.RETURN)
''' жмем ввод '''
assert "No results found." not in driver.page_source
driver.close()
Примечание
на голосе и некоторых проектах где используется ReactJS и тд такое не прокатит. так как физически элементов не существует. Надо работать со вставкой js.
еще методы обращения к элементам можно найти тут
http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement