GOLOS
RU
EN
UA
moriarch
2 года назад

Пишем бота на питон и 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

14
0.003 GOLOS
На Golos с December 2017
Комментарии (0)
Сортировать по:
Сначала старые