自动化优化流程

自动化流程

"""python自动化"""
import time
import random
from selenium.webdriver.common.by import By

from pages.home import HomePage
from pages.login import LoginPage


def gen_class_name():
    """随机生成课程名称, 字母,生成10长度的字母。
    aacdeyualp
    """
    name = ''
    for i in range(10):
        letter = random.choice('abcdefghijklmnopqrstuvwxyz')
        name += letter
    return name + str(int(time.time()))


class TestAddClass:
    # 测试类可以不创建吗?可以
    # pytest当中,测试用例函数可以写在类下面,也可以单独存在

    def test_add_success(self, get_driver):
        """运行成功的测试用例.

        测试步骤:
        1、打开浏览器
        2、登录老师账号 前置条件
        3、点击创建/加入课程
        4、点击创建课程(课程名称,动态生成,每次都不一样的课程名)
        5、输入课堂名称其他数据
        6、点击创建
        7、出现已经创建好的课程。
        8、assert, 如果在首页上出现了课程名称 # 要不要校验数据库
        # ui 测试 ui界面显示是否正常。
        """
        # 获取浏览器
        driver = get_driver

        # 登录老师账号, 直接从 LoginPage 当中调用 login 方法
        login_page = LoginPage(driver)
        home_page = HomePage(driver)

        login_page.load().login("wagyu2016@163.com", "admin123456")

        # 进入首页
        # 先获取所有的课程内容判断新的课程标题是否已经存在
        # Lily: 加一个时间戳
        driver.find_element(By.XPATH, "//span[contains(text(),'+ 创建/加入课程')]").click()
        driver.find_element(By.XPATH, "//a[@id='addClass']").click()

        # 输入课程名称
        # 去随机生成一个课程名称
        class_name = gen_class_name()
        driver.find_element(By.XPATH, "//input[@placeholder='请输入课程名称']").send_keys(class_name)
        time.sleep(2)

        # 点击学期选择下拉框
        driver.find_element(By.CSS_SELECTOR, '.yearselbox').click()
        # 点击自己想要的选项
        driver.find_element(By.XPATH, '//li[text()="2014-2015"]').click()
        driver.find_element(By.CSS_SELECTOR, '.pop-btns > .sure').click()

        # 断言
        # 能不能找到课程
        assert driver.find_element(By.XPATH, f'//a[text()="{class_name}"]')

        time.sleep(2)

===============================================================

前置条件

import pytest
from selenium import webdriver

from pages.login import LoginPage


@pytest.fixture()
def get_driver():
    """启动浏览器"""
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    driver.maximize_window()
    yield driver
    driver.quit()


@pytest.fixture()
def teacher_login(get_driver):
    login_page = LoginPage(get_driver)
    login_page.load().login("wa222222163.com", "a22222256")
    return get_driver
    # 没有后置
    

=================================================================

随机生成字符

import time
import random


def gen_class_name():
    """随机生成课程名称, 字母,生成10长度的字母。
    aacdeyualp
    """
    name = ''
    for i in range(10):
        letter = random.choice('abcdefghijklmnopqrstuvwxyz')
        name += letter
    return name + str(int(time.time()))


if __name__ == "__main__":
    print(gen_class_name())
    

========================================

PO优化自动化流程

pages模块中的home.py文件

from selenium.webdriver.common.by import By

from common.basepage import BasePage


class HomePage(BasePage):
    url = 'https://v4.ketangpai.com/Main/index.html'
    # 获取用户头像
    avatar_locator = (By.XPATH, '//*[@class="avatar"]')
    # 新建课程/加入课程
    new_class_locator = (By.XPATH, "//span[contains(text(),'+ 创建/加入课程')]")
    # 创建课程
    create_class_locator = (By.XPATH, "//a[@id='addClass']")
    # 课程名称输入框
    class_input_locator = (By.XPATH, "//input[@placeholder='请输入课程名称']")
    # 学期选择框
    term_selector_locator = (By.CSS_SELECTOR, '.yearselbox')
    # 确认创建按钮
    create_confirm_locator = (By.CSS_SELECTOR, '.pop-btns > .sure')


    # def __init__(self, driver):
    #     self.driver = driver

    def load(self):
        self.driver.get(self.url)
        return self

    def get_username(self):
        """获取头像中的登录用户名
        TODO: 封装获取属性属性"""
        user_elem = self.driver.find_element(*self.avatar_locator)
        return user_elem.get_attribute('title')

    def add_class(self, name, term="2014-2015"):
        """添加课程"""
        driver = self.driver
        self.click(self.new_class_locator)
        self.click(self.create_class_locator)
        driver.find_element(*self.new_class_locator).click()
        driver.find_element(*self.create_class_locator).click()

        # 输入课程名称
        # 去随机生成一个课程名称
        driver.find_element(*self.class_input_locator).send_keys(name)
        # 点击学期选择下拉框
        driver.find_element(*self.term_selector_locator).click()
        # 点击自己想要的选项
        driver.find_element(By.XPATH, f'//li[text()="{term}"]').click()
        # 点击创建
        driver.find_element(*self.create_confirm_locator).click()
        return self

    def get_class(self, name):
        """根据课程名称定位元素"""
        el = self.driver.find_element(By.XPATH, f'//*[text()="{name}"]')
        return el
        

================================================

PO优化的成果

"""python自动化"""

from pages.home import HomePage
from common import helper



class TestAddClass:
    def test_add_success(self, teacher_login):
        """运行成功的测试用例.
        """
        # 获取浏览器
        driver = teacher_login
        home_page = HomePage(driver)

        # 添加课程
        class_name = helper.gen_class_name()
        home_page.add_class(class_name, term='2020-2021')

        # 断言
        assert home_page.get_class(class_name)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值