Python подключаем Selenium Linux

Подготовка

Необходимо:

  1. скачать требуемый вэбдрайвер (webdriver) браузера (поддерживаемого) в зависимости от вашей OS для управления им с помощью Selenium  https://selenium-python.readthedocs.io/installation.html#drivers
    Распаковать соответствующий файл в папку:
    — для Windows:
    C:/WebDriver\bin\phantomjs.exe
    — для Linux:
    /opt/WebDriver/bin/phantomjs
    В пример я использовал вэбдрайвер PhantomJS (хотя он не рекомендуется для использования), так как не он показывает окно с запускаемой программой
  2. Для того, чтобы воспользоваться вэбдрайвером нужно установить значение системной перменной Path:
    — для Windows в командной строке (или в ручном режиме) :
     setx /m path «%path%;C:\WebDriver\bin\»
    — для Linux ввести в Терминале:
    export PATH=$PATH:/opt/WebDriver/bin >> ~/.profile
    Чтобы проверить получилось ли установить path введите в Теримнале команду:
    phantomjs (chromedriver, если выбрали Chrome) Теримнал покажет готовность получить команды от вас для драйвера. Чтобы выйти из режима нажимте Ctrl+C .
  3. Установить пакет Selenium командой в Терминале (для Windows в Терминале приложения для разработки или тоже в Терминале для Linux):
    pip install selenium

Исходный код

# ref
	from selenium import webdriver
	from selenium.webdriver.common.keys import Keys
	from selenium.webdriver.common.by import By
	from selenium.webdriver.support.ui import WebDriverWait
	from selenium.webdriver.support import expected_conditions as EC

	#инициализация
	driver = webdriver.PhantomJS()
	# переход по ссылке
    driver.get(href)
    try:
		# ожидаем появления на странице элемента с аттрибутом "class" со значением "item-address__string"
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "item-address__string"))
        )
        # находим нужный элемент 
        elem = driver.find_element_by_class_name("item-address__string")
		# и получаем его текст
        full_address = elem.text
        print('full_address = ' + full_address)
    except BaseException as ex:
        print('Error load avito page. Error = ' + format(ex))
		# скрин окна барузера (как оно выглядело в момент ошибки)
        driver.save_screenshot('screenshot.png')
    finally:
		# обязательно выгружаем из памяти
        driver.quit()