Selenium+Pytest+POM

Selenium 官方文档

文章目录

一、为什么选择 Selenium

1、什么是 Selenium?

Selenium 不是一个工具,是一个工具包:

  • Selenium IDE
  • Selenium Grid
  • Selenium WebDriver

2、为什么选择 Selenium ?

  • 1.1 Selenium 提供完备工具包,用例创建、编辑、执行,开箱即用
  • 1.2 Selenium 支持多种编程语言
  • 1.3 Selenium 支持多种浏览器进行测试

如果仅仅测试 Chrome 下的 web 页面,建议用:playwright;

如果不只是测试 Chrome 下的 web 页面,建议用:Selenium

二、Selenium 底层原理

编程语言通过调用 selenium,selenium 通过 webdriver 接口(基于 HTTP 协议)调用浏览器驱动,浏览器驱动(是各浏览器开发的)去驱动浏览器。

比如:Python->selenium->HTTP->chromedriver->chrome


三、搭建 web 自动化测试环境

可参考 Selenium-WEB自动化测试环境配置文档

1、安装 Python

2、安装浏览器-比如 Chrome

3、安装浏览器驱动,注意和浏览器版本保持一致。

4、安装 selenium,在 pycharm 的终端下执行:

  • pip install selenium

5、测试脚本:

复制代码
from time import sleep
from selenium import webdriver
Ch_driver = webdriver.Chrome()
Ch_driver.get("https://www.baidu.com")
sleep(3)
Ch_driver.quit()

复制代码
from webdriver_helper import get_webdriver
driver = get_webdriver() # 启动浏览器
driver.get("https://www.baidu.com") # 控制浏览器
sleep(3)
driver.quit()

四、测试框架


五、浏览器启动、关闭与控制

1、 浏览器启动

安装 webdriver-helper :pip install webdriver-helper==1.*

  • 带浏览器类型启动浏览器:

    from webdriver_helper import get_webdriver
    driver = get_webdriver('edge') # 启动浏览器,不需要再单独安装浏览器驱动

  • 带浏览器参数启动浏览器

    options = webdriver.EdgeOptions()

    options.add_argument('--headless') #无头模式

    options.add_argument('--start-maximized') # 最大化模式

    options.add_argument('--proxy-server=https://127.0.0.1:8866://') #使用代理

    driver = get_webdriver(options=options) # 带浏览器参数启动浏览器

2、 浏览器关闭
  • python 执行完毕会自动关闭
  • 退出浏览器 driver.quit()
  • 关闭当前窗口 driver.close()
3、 浏览器控制

代码是 driver.xxxxxx

复制代码
driver.maximize_window() #最大化窗口
driver.set_window_size(390, 844) #设置窗口大小
driver.back() #回到空白页面
driver.forward() #前进到上一次访问的页面
driver.refresh() #刷新:地址不变,输入框的内容全部丢失

六、元素定位与控制

代码是 driver.find_element().xxxxxx

先定位元素,再控制元素

1、 元素定位

八大定位策略:

分为三类:

  • 1-属性

  • 2-文本

  • 3-表达式:

    • xpath 和 css selector 最常用,两个核心
    • xpath :xml 的查询语言,网页是 HTML 是 XML 的子类

定位策略被 find_element 使用:

  • find_element:返回一个元素
  • find_elements:返回多个元素,放在一个列表
2、三大等待

等待 是为了解决页面尚未就绪 ,导致的自动化操作失败
拓展知识-页面的状态:

  • a、加载 HTML
  • b、渲染 DOM
  • c、元素出现在画面中
  • d、元素可以接受交互

三种等待:

  • a、强制等待:知道等待时长的时候使用

    from time import sleep
    sleep(1)

  • b、隐式等待:不知道等待时长的时候使用

    driver.implicitly_wait(5)

  • c、显式等待:复杂的等待就绪条件下使用

    def wait_el_can_click(driver):
    # 元素可以被定位
    element = driver.find_element(By.XPATH, '//*[@class="bg s_btn"]')
    # 元素可以点击
    return element.is_enabled()
    #等待
    wait = WebDriverWait(driver, 10)
    wait.until(wait_el_can_click)

3、元素控制

举例:

  • 点击:click 右键点击

  • 输入内容:send_keys

    driver.find_element(By.XPATH,'//*[@id="kw"]').send_keys("python")

4、信息获取
复制代码
print("浏览器名称",driver.name)
print("网站标题",driver.title)
print("网站地址",driver.current_url)
print("网站源码",driver.page_source)
5、高级控制技巧
  • 窗口切换
  • 读写 cookies
  • 执行 JavaScript

七、 POM 封装

1、什么是 POM?
2、怎么封装 POM?



创建一个对象,就会执行它的 init 方法
执行步骤:

  • 1、执行 Main pytest.main()
  • 2、执行前置:driver = login_baidu()
  • 3、执行用例:test_login
  • 4、执行 LoginPage 页的方法
  • 5、执行后置:print("关闭浏览器")

未完待续。。。。。。

相关推荐
qq_3325394510 分钟前
绕过 reCAPTCHA V2/V3:Python、Selenium 指南
javascript·爬虫·python·selenium·算法·网络爬虫
测试杂货铺1 小时前
Web自动化测试详细流程和步骤
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
一只天蝎的晋升之路2 小时前
Python中常用的测试框架-pytest和unittest
开发语言·python·pytest
明月与玄武2 小时前
pytest-xdist 进行高效并行自动化测试
pytest·pytest-xdist·进行高效并行自动化测试
测试笔记(自看)12 小时前
Python+Requests+Pytest+YAML+Allure接口自动化框架
python·自动化·pytest·allure
测试老哥15 小时前
白盒测试用例的设计(图文讲解)
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
活跃家族16 小时前
Jsonpath使用
python·pytest
发财哥fdy17 小时前
3.24-2 postman使用
测试工具·postman
第三方软件测评1 天前
软件功能性测试工具有哪些?专业软件测试服务推荐
软件测试·测试工具
学海吾涯回头是俺1 天前
Selenium基本使用(三)隐藏框、获取文本、断言、切换窗口
selenium·测试工具