Установка Selenium, настройка Firefox и базовое использование Selenium (очень подробно)

задняя часть Element Selenium Firefox

предисловие

Давайте сначала посмотрим на определение Selenium:

Selenium — это инструмент для тестирования веб-приложений. Selenium-тесты запускаются прямо в браузере, как настоящий пользователь. Поддерживаемые браузеры включают IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera и т. д. Основные функции этого инструмента включают в себя: Проверка совместимости с браузерами — проверьте свое приложение, чтобы увидеть, хорошо ли оно работает в разных браузерах и операционных системах. Проверка функциональности системы. Создавайте регрессионные тесты для проверки функциональности программного обеспечения и требований пользователей. Поддерживает автоматическую запись действий и автоматическую генерацию тестовых сценариев на разных языках, таких как .Net, Java, Perl и т. д.

Установка селена

1. Установка PIP:

Введите следующий код в путь пипса:


pip install selenium

2. Установите через Pycharm:

Войдите в программное обеспечение Pycharm: Файл -> Настройки по умолчанию

Настройка среды Firefox

1. Скачать браузер Firefox онлайн, очень просто, что и говорить

2. Добавьте переменные среды в путь Firefox.

Найдите путь к firefox, например C:\Program Files\Mozilla Firefox, и добавьте его после того, как найдете:

** 3. Загрузите geckodriver, ** URL-адрес загрузки:

https://github.com/mozilla/geckodriver/releases

После завершения загрузки поместите geckodriver.exe в путь установки firefox (не забудьте)

4. Загрузите Selenium IDE в Firefox.

Затем нажмите: Получить дополнительные компоненты, войти в Selenium IDE, скачать и установить.

5. Подтвердить

Вы можете ввести в командном окне:


firefox.exe

Посмотрите, сможете ли вы нормально перейти на веб-страницу.

Затем вы можете ввести в редакторе Python:


from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://baidu.com')

В случае успеха он будет нормально прыгать.


Подробное объяснение различных способов использования Python-selenium (перетаскивание элементов, переключение страниц и т. д.)

Вышеупомянутая установка селена

Теперь поговорим о конкретном использовании селена.Что касается базового метода, то вы можете напрямую посмотреть селениум API.Здесь написана только часть:

выбор одного элемента

  • find_element_by_id

  • find_element_by_name

  • find_element_by_xpath

  • find_element_by_link_text

  • find_element_by_partial_link_text

  • find_element_by_tag_name

  • find_element_by_class_name

  • find_element_by_css_selector

Выбор нескольких элементов

  • find_elements_by_name

  • find_elements_by_xpath

  • find_elements_by_link_text

  • find_elements_by_partial_link_text

  • find_elements_by_tag_name

  • find_elements_by_class_name

  • find_elements_by_css_selector

Специальное использование Selenium

1. Взаимодействие со страницей

Позвольте мне привести пример ниже, откройте браузер Baidu, введите «selenium» и выполните поиск, распечатайте исходный код, конкретный код выглядит следующим образом:


def pageInteraction():
   driver = webdriver.Firefox()
   driver.get('http://www.baidu.com')
   # 隐示等待,为了等待充分加载好网址
   driver.implicitly_wait(5)
   write = driver.find_element_by_id("kw")
   write.send_keys("Selenium")
   # 点击
   driver.find_element_by_id('su').click()
   try:
       # 显示等待,其中5的解释:5秒内每隔0.5毫秒扫描1次页面变化,直到指定的元素
       wait = WebDriverWait(driver, 5)
       wait.until(lambda driver: driver.find_element_by_id("content_left"))
       # 打印源代码
       print(driver.page_source)

   except TimeoutException:
       print("查询元素超时")
   finally:
       driver.close()

2. Нажатие элемента страницы

Пакет ActionChains необходимо импортировать, а URL-адрес исходит из Интернета.


def elementDragging():
   try:
       driver = webdriver.Firefox()
       url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
       driver.get(url)
       driver.implicitly_wait(5)
       # 切换到元素所在的frame
       driver.switch_to.frame("iframeResult")
       # 起点
       start = driver.find_element_by_id("draggable")
       # 终点
       end = driver.find_element_by_id("droppable")

       actions = ActionChains(driver)
       actions.drag_and_drop(start, end)
       # 执行
       actions.perform()
   except Exception:
       print("exception")
   finally:
       driver.close()

3. Переключение страниц

Найдите ключевые слова через Baidu и откройте веб-страницу, переключитесь на страницу нового окна, а затем откройте третью страницу.

В основном используются следующие три метода:

  • current_window_handl: получить дескриптор текущего окна

  • window_handles: возвращает дескрипторы всех окон в текущий сеанс

  • switch_to_window(): функция переключения окна


def pageSwitching():
   driver = webdriver.Firefox()
   driver.get('http://www.baidu.com')
   #获取当前百度界面的窗口句柄
   BD_windows = driver.current_window_handle
   #打印
   print(BD_windows)
   # 隐示等待,为了等待充分加载好网址
   driver.implicitly_wait(5)

   write = driver.find_element_by_id("kw")
   write.send_keys("CSDN")
   # 点击
   driver.find_element_by_id('su').click()
   try:
       #打开一个网页
       driver.find_element_by_link_text(u'CSDN-专业IT技术社区').click()
       # 隐示等待,为了等待充分加载好网址
       driver.implicitly_wait(5)
       #打印所有的窗口
       print(driver.window_handles)
       # 隐示等待,为了等待充分加载好网址
       driver.implicitly_wait(5)
       #窗口切换到第二个网页
       driver.switch_to_window(driver.window_handles[1])
       #点击第二个网页的"写博客"按钮
       driver.find_element_by_link_text(u'写博客').click()
       time.sleep(5)

   except Exception:
       print("exception")
   finally:
       driver.quit()

4. Обработка всплывающих окон


alert = driver.switch_to_alert()
print(alert .text)
alert .accept()

Вот полный исходный код:


# coding=utf-8
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver import ActionChains
import time

#页面交互
def pageInteraction():
   driver = webdriver.Firefox()
   driver.get('http://www.baidu.com')
   # 隐示等待,为了等待充分加载好网址
   driver.implicitly_wait(5)
   write = driver.find_element_by_id("kw")
   write.send_keys("Selenium")
   # 点击
   driver.find_element_by_id('su').click()
   try:
       # 显示等待,其中5的解释:5秒内每隔0.5毫秒扫描1次页面变化,直到指定的元素
       wait = WebDriverWait(driver, 5)
       wait.until(lambda driver: driver.find_element_by_id("content_left"))
       # 打印源代码
       print(driver.page_source)

   except TimeoutException:
       print("查询元素超时")
   finally:
       time.sleep(3)
       driver.close()

#页面元素拖拽
def elementDragging():
   try:
       driver = webdriver.Firefox()
       url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
       driver.get(url)
       driver.implicitly_wait(5)
       # 切换到元素所在的frame
       driver.switch_to.frame("iframeResult")
       # 起点
       start = driver.find_element_by_id("draggable")
       # 终点
       end = driver.find_element_by_id("droppable")

       actions = ActionChains(driver)
       actions.drag_and_drop(start, end)
       # 执行
       actions.perform()
   except Exception:
       print("exception")
   finally:
       driver.close()

#页面切换
def pageSwitching():
   driver = webdriver.Firefox()
   driver.get('http://www.baidu.com')
   #获取当前百度界面的窗口句柄
   BD_windows = driver.current_window_handle
   #打印
   print(BD_windows)
   # 隐示等待,为了等待充分加载好网址
   driver.implicitly_wait(5)

   write = driver.find_element_by_id("kw")
   write.send_keys("CSDN")
   # 点击
   driver.find_element_by_id('su').click()
   try:
       #打开一个网页
       driver.find_element_by_link_text(u'CSDN-专业IT技术社区').click()
       # 隐示等待,为了等待充分加载好网址
       driver.implicitly_wait(5)
       #打印所有的窗口
       print(driver.window_handles)
       # 隐示等待,为了等待充分加载好网址
       driver.implicitly_wait(5)
       #窗口切换到第二个网页
       driver.switch_to_window(driver.window_handles[1])
       #点击第二个网页的"写博客"按钮
       driver.find_element_by_link_text(u'写博客').click()
       time.sleep(5)

   except Exception:
       print("exception")
   finally:

       driver.quit()

if __name__ == '__main__':
    pageInteraction()
    #pageSwitching()
    #elementDragging()

Вы можете следить за моей публичной учетной записью WeChat: «Цинь Цзышуай» — это публичная учетная запись с качеством и отношением!