黑马头条测试

在这里插入图片描述

项目介绍

  1. 项目简介
    在这里插入图片描述
  2. 功能架构
    在这里插入图片描述
  • 前端功能
    在这里插入图片描述

  • 后端功能
    在这里插入图片描述

  1. 技术架构
    在这里插入图片描述
  • 负载均衡
    在这里插入图片描述
    在这里插入图片描述

  • 消息列队
    在这里插入图片描述
    应用场景
    在这里插入图片描述
    在这里插入图片描述

测试功能模块
  1. 待测功能模块
    文章发布流程
  • 新建文章(自媒体端)
  • 审核文章(后台管理系统)
  • 查看文章(APP端)
    在这里插入图片描述

UI自动化测试

  1. Selenium Grid介绍-实现分布式执行测试用例
    在这里插入图片描述
  • 1.1 Selenium Grid工作原理
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  1. Selenium Grid环境部署
  • 安装包地址
  • 启动主控服务-Hub
    1)进入命令行窗口 cmd
    2)切换到【selenium-server-standalone-3.141.59.jar】文件所在的路径,输入以下命令启动Hub服务:
java -jar selenium-server-standalone-3.141.59.jar -role hub -maxSession 10 -port 4444

3)打开浏览器验证Hub启动成功与否

http://localhost:4444/

在这里插入图片描述

4)启动Node节点

java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555 -hub http://192.168.146.1:4444/grid/register  -maxSession 5 -browser browserName=chrome,seleniumProtocol=WebDriver,maxInstances=5,platform=WINDOWS,version=98.0.4758.82

5)检查注册结果
在这里插入图片描述

在这里插入图片描述

  1. Selenium Grid使用
  • 3.1 实例化driver对象
    在这里插入图片描述
    3.1.1)获取driver
# 1. 使用chrom浏览器
# 2. 打开百度并搜索python关键字
# 3. 暂停3秒,关闭浏览器
#导包
from selenium import webdriver
from time import sleep
#获取driver
# chrome_driver=r"D:\Anaconda\Lib\site-packages\selenium\chromedriver.exe"
# driver=webdriver.Chrome(executable_path=chrome_driver)
#重点获取driver
cap={
    "browserName": "chrome",
    "version": "",
    "platfrom": "MAC"
}

driver=webdriver.Remote("http://127.0.0.1:4444/wd/hub", cap)#选中Remote按住ctrl enter
#打开百度
driver.get("http://www.baidu.com")
#输入关键字
driver.find_element_by_id("kw").send_keys("python")
#点击搜索按钮
driver.find_element_by_id("su").click()
#暂停3秒 关闭浏览器
sleep(3)
driver.quit()

3.1.2)示例
在这里插入图片描述
1、多线程
在这里插入图片描述
2、浏览器启动参数
在这里插入图片描述

"""
    目标:
        1. 多线程应用
        2. 不同浏览器启动参数
"""
from selenium import webdriver

chrome=webdriver.DesiredCapabilities.CHROME.copy()
print(chrome)
chrome['platform']="WINDOW"
print(chrome)

3、

首先启动Hub节点

再启动两个node节点
1)启动浏览器为chrome

java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555 -hub http://192.168.146.1:4444/grid/register  -maxSession 5 -browser browserName=chrome,seleniumProtocol=WebDriver,maxInstances=5,platform=WINDOWS,version=98.0.4758.82

2)启动浏览器为firefox

java -jar selenium-server-standalone-3.141.59.jar -role node -port 5556 -hub http://192.168.146.1:4444/grid/register  -maxSession 5 -browser browserName=firefox,seleniumProtocol=WebDriver,maxInstances=5,platform=WINDOWS

在这里插入图片描述

开始黑马头条UI自动化测试

1. UI自动化测试流程

在这里插入图片描述
1.1 抽取自动化用例的规则
在这里插入图片描述
1.2 编写自媒体测试用例
在这里插入图片描述

2. 项目搭建
  1. 本机环境搭建
    在这里插入图片描述

  2. 目录结构
    在这里插入图片描述

  3. base
    在这里插入图片描述例如将自媒体测试用例登录模块的输入用户名和密码方法放到base文件夹里的base.py里

  • base.py 自媒体登录业务所需公共方法
    在这里插入图片描述

  • 查找元素封装重点
    在这里插入图片描述

  • 输入方法封装步骤
    在这里插入图片描述

  • 获取元素文本注意return

代码实现

from selenium.webdriver.support.wait import WebDriverWait
class Base:
    # 初始化
    def __init__(self,driver):
        """ 解决driver """
        # 获取浏览器驱动
        self.driver = driver

    #查找 方法封装(以下三种方法的公共方法)
    def base_find(self,loc,timeout=30,poll=0.5):
        #为了在查找过程中避免数据加载太慢的问题
        # 元素定位 -- 元素等待(显式等待) self.driver.find_element(*loc) 优点:返回元素、可以修改查找频率
        """

        :param loc: 格式为列表或元组,内容:元素定位信息使用By类
        :param timeout:查找元素超时时间,默认30秒
        :param poll:查找元素频率,默认0.5秒
        :return:元素
        """
        element= WebDriverWait(self.driver,timeout=timeout,poll_frequency=poll).until(lambda x:x.find_element(*loc))
    # 输入 方法封装
        return element
    def base_input(self, loc ,value):
        """

        :param loc: 元素的定位信息
        :param value: 要输入的值
        """
        # 1.获取元素
        el=self.base_find(loc)
        # 2.清空操作
        el.clear()
        # 3.输入操作
        el.send_keys(value)
    #点击 方法封装
    def base_click(self,loc):
        """

        :param loc:元素定位信息
        """
        # 获取元素并点击
        self.base_find(loc).click()

    #获取 元素文本
    def base_get_text(self,loc):
        """

        :param loc: 元素的定位信息
        :return: 返回元素的文本值
        """
        return self.base_find(loc).txt


  1. page实现
    在这里插入图片描述
    代码
    1)page_mp_login.py
from base.base import Base


class PageMpLogin(Base):
    #输入用户名
    def page_input_username(self):


    #输入验证码
    def page_input_code(self):


    #点击登录按钮
    def page_click_login_btn(self):


    #获取昵称封装
    def page_get_nickname(self):


    #组合业务方法
    def page_mp_login(self):

  1. page_in.py
class PageIn:
    def __init__(self,driver):
        self.driver=driver
    # 获取PageMpLogin对象
    def page_get_PageMpLogin(self):
        return PageMpLogin(self.driver)

版权声明:本文为qq_43431863原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。