UI自动化测试

selenium:通过脚本操作浏览器

pip install selenium

pip install

打开浏览器,下载驱动

通过webdriver_manager实现浏览器自动匹配驱动

  1. 步骤

    打开浏览器

    打开网页

    操作元素

    from selenium.webdriver.common.by import By
    from time import sleep
    from drivers import NewDriver
    
    
    driver = NewDriver().newDriver()
    #打开网页
    driver.get("http://www.baidu.com")
    #找到元素
    driver.find_element(By.ID, "kw").send_keys("布偶猫")
    driver.find_element(By.ID, "su").click
    
    sleep(30)
    
  2. 公司自动化组的操作流程

    手工测试组编写用例,交给自动化测试组,自动化测试组根据优先级进行测试,先做优先级高难度低的-->优先级低难度低-->优先级高难度高

    大多的操作是 输入,点击

    其他:拖动,滑动,双击

  3. 通过Xpath定位
  4. 如何断言

    通过页面的显示,进行断言。例:收藏一本书,则进入这本书的详情页,显示已收藏。

    一个操作一行代码。

  5. 问题:

    复杂的控件定位不到:

  6. Xpath

    XML Path Language XML控件定位语言

    绝对路径:

    ​ Xpath 中最直观的定位策略就是绝对路径。 以百度中的输入框和按钮为例,通过拷贝出来的 full Xpath:

    /html/body/div[2]/div/div/div/div/form/span/input

    相对路径

    除了绝对路径,Xpath 中更常用的方式是相对路径定位方法,以“//”开头(这个就相当于全局搜索)。

    表达式 说明 举例
    / 从根节点开始选取 /html/div/span
    // 从任意节点开始选取 //input
    . 选取当前节点
    .. 选取当前节点的父节点 //input/.. 会选取 input 的父节点
    @ 选取属性或者根据属性选取 //input[@data] 选取具备 data 属性的 input 元素 //@data 选取所有 data 属性

    *通配符,表示任意节点或任意属性

  7. 日期控件

    每个控件都要等他加载完成后,再操作

    加载:请求后端数据,还没渲染页面时

    怎么保证加载完成:

    修改日期中的年份

  8. 线性转封装思路
    相同步骤封装

    新建类,放入方法中,不可行

    selenium运行依靠driver

    把登录功能隔离时新建一个driver

    其他时刻又新建了driver,运行失败

  9. 用*实现解包操作:

    分解为2个参数

    Xpath可读性差,重命名

    改需求时不好维护,

    入参不好改变

  10. 具体实现

    POM:对page进行操作

    定义page中的方法和元素定位(属性)

    将driver定义到BasePage中

    然后继承basePage,获取操作的方法

    将操作(打开浏览器,点击,输入)分离出去,通过参数定义路径和输入

    其实我们可以通过传入driver和返回driver的方式

    实际上是将driver放入父类的构造函数中,新增Driver只需子类调用构造函数

    思想即:将所有基本操作和driver,登录浏览器等操作放入父类中,将具体操作步骤放入子类中。

  11. 使用Pytest将页面关联起来

    利用@Pytest.fixture(session)定义作用域

    在这个方法下,新增driver

    将这个方法名称写到需要连贯运行的页面中,让他们为一个driver,则会连续运行

  12. 分布式测试selenium grid

    分布式多台机器完成一个行为

    可以多台机器一起测,或者设置一个服务器的极限,当到了极限后,则换成另外的浏览器

    webUI很慢,需要用分布式

  13. selenium原理
  14. selenium grid 逻辑
  15. 步骤

启动jar包,设置主节点

另一台服务器下设置子节点

登录localhost:4444(默认端口号)可以看到子节点

command_executor指定hub主机

当当前一台主机运行不下去时,会自动采用另一台测试

grid当中driver的生成有grid生成,与原本定义方法不同

posted @ 2024-05-31 09:18  疯啦吧你  阅读(23)  评论(0编辑  收藏  举报