WEB实战项目——创建

前置条件

conftest.py

import pytest
from selenium import webdriver
from pages.login_page import Login

@pytest.fixture()
#   登录浏览器
def login_get():
    driver = webdriver.Chrome()
    driver.implicitly_wait(8)
    driver.maximize_window()
    yield driver
    driver.quit()


@pytest.fixture()
def teacher_login():
    driver = webdriver.Chrome()
    driver.implicitly_wait(8)
    driver.maximize_window()
    login = Login(driver)
    login.load()
    login.up_login("19142706666", "w6666664")
    yield driver


@pytest.fixture()
def student_login():
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    driver.maximize_window()
    login = Login(driver)
    login.load().up_login("13560766669", "w6666664")
    yield driver
    driver.quit()


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

pages 模块

login_page.py(PO模式)

from selenium.webdriver.common.by import By
from common.yaml_handler import yaml_config

host = yaml_config["host"]


class Login:
    url = host + "/User/login.html"

    """ 元素:用户名 """
    user_name = (By.XPATH, '//input[@name="account"]')

    """ 元素:密码 """
    pass_word = (By.XPATH, '//input[@name="pass"]')

    """ 元素:登录 """
    up_dl = (By.XPATH, '//a[@class="btn-btn"]')

    """ "账号不能为空","密码不能为空" """
    user_word = (By.XPATH, '//p[@class="error-tips"]')

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

    """ 访问 URL 页面 """
    def load(self):
        self.driver.get(self.url)
        return self

    """ 账号、密码、登录 """
    def up_login(self,username,password):
        self.driver.find_element(*self.user_name).send_keys(username)
        self.driver.find_element(*self.pass_word).send_keys(password)
        self.driver.find_element(*self.up_dl).click()
        return self

    def clear(self):  # 清空用户名和密码
        self.driver.find_element(By.XPATH, '//input[@name="account"]').clear()
        self.driver.find_element(By.XPATH, '//input[@name="pass"]').clear()
        return self

    def actual(self):
        """获取错误信息:"账号不能为空","密码不能为空" """
        elem = self.driver.find_elements(*self.user_word)
        text = [el.text for el in elem]
        return text

        # actual_value = []
        # for el in elem:
        #     actual_value.append(el.text)
        # text = actual_value

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

home_page.py(PO模式)

from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from common.yaml_handler import yaml_config


host = yaml_config["host"]


class Home:
    url = host + "/Main/index.html"

    # 元素:获取头像
    get_win_01 = (By.XPATH, '//*[@class="avatar"]')

    # 元素:+ 创建/加入课程
    up_add = (By.XPATH, '//*[contains(text(),"+ 创建/加入")]')

    # 创建
    up_add_id = (By.XPATH, '//a[@id="addClass"]')

    # 输入名称
    name_up = (By.XPATH, '//input[@placeholder="请输入名称"]')

    # 元素:选择学期下拉框
    pull = (By.XPATH, '//div[@class="yearselbox"]')

    # 元素:点击创建
    up_sure = (By.XPATH, '//a[@class="sure active" and contains(text(),"创建")]')

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

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

    """ 获取头像中的登录用户名 """
    def get_win(self):
        get_img = self.driver.find_element(*self.get_win_01)
        return get_img.get_attribute("title")

    def up_name_time(self,name,term="2014-2015"):
        driver = self.driver
        
        #   + 创建/加入课程
        driver.find_element(*self.up_add).click()
        
        #   创建课程
        driver.find_element(*self.up_add_id).click()

        # 随机生成10个字符串
        driver.find_element(*self.name_up).send_keys(name)
        
        #   选择学期下拉框
        driver.find_element(*self.pull).click()

        # 元素:选择学期的时间
        time_name = (By.XPATH, f'//li[contains(text(),"{term}")]')
        el = driver.find_element(*time_name)
        ActionChains(driver).click(el).perform()
        
        #   创建
        driver.find_element(*self.up_sure).click()
        return self

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

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

随机生成字符串

common 模块

helper.py

import random
import time


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

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

创建

tests 模块

test_add.py

import time
from selenium.webdriver.common.by import By
from pages.login_page import Login
from pages.home_page import Home
from common.helper import gen_class_name

class TestAdd:
    def test_add(self,login_get):
        # 前置条件的调用
        driver = login_get

        # 重新赋值,导入模块的实例化
        login = Login(driver)
        home = Home(driver)
        login.load()

        login.up_login("19142706623","wtg444444")
        up_add = (By.XPATH,'//*[contains(text(),"+ 创建/加入")]')
        driver.find_element(*up_add).click()

        # 创建
        up_add_id = (By.XPATH,'//a[@id="addClass"]')
        driver.find_element(*up_add_id).click()

        # 输入名称
        name_up = (By.XPATH,'//input[@placeholder="请输入名称"]')
        # 随机生成10个字符串
        gen_name = gen_class_name()
        driver.find_element(*name_up).send_keys(gen_name)

        # 元素:选择学期下拉框
        pull = (By.XPATH,'//div[@class="yearselbox"]')
        driver.find_element(*pull).click()

        # 元素:选择学期的时间
        time_name = (By.XPATH,'//div[@class="yearselbox"]//*[contains(text(),"2011-2012")]')
        driver.find_element(*time_name).click()

        # 元素:点击创建
        up_sure = (By.XPATH,'//a[@class="sure active" and contains(text(),"创建")]')
        driver.find_element(*up_sure).click()

        name_title = (By.XPATH,f'//a[@title="{gen_name}"]')
        assert driver.find_element(*name_title)
        time.sleep(2)

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

test_add_PO.py

import time

from selenium.webdriver.common.by import By

from pages.login_page import Login
from pages.home_page import Home
from common.helper import gen_class_name

class TestAdd:
    def test_add(self,login_get):
        # 前置条件的调用
        driver = login_get

        # 重新赋值,导入模块的实例化
        login = Login(driver)
        home = Home(driver)
        login.load()

        login.up_login("19142706611","666666666")
        gen_name = gen_class_name()
        home.up_name_time(gen_name,term="2020-2021")
        assert home.el_up(gen_name)
        time.sleep(2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值