首页 > 其他分享 >UI自动化测试Ⅱ

UI自动化测试Ⅱ

时间:2022-09-21 17:37:50浏览次数:68  
标签:self driver base UI 测试 自动化 import div def

页面对象设计模式:UI自动化测试框架设计 框架设计使用到的设计模式是:页面对象设计模式,pageobject

 

页面对象设计的三个优势:

创建可以跨多个测试用例共享的代码

减少重复代码的数量

如果用户界面发生了维护,我们只需要维护一个地方,这样修改以及维护的成本相对而言是比较低的

 

base:基础层,主要编写的是底层元素封装

page:对象层,主要指的是把页面的每一个交互写成一个独立的方法

test:测试层,里面主要编写测试用例

common:公共方法,把公共的方法分离到这个里面

utils:工具类,主要指的是操作一些工具的类

data:把测试过程中的数据存储在这个目录下

report:测试报告,主要指的是存储生成的HTML的测试报告

 

创建一个新的项目pa'geObject,在pageObject中创建以下包和文件夹:

 

 

 

到base中创建软件包base.py,再写入基础代码:

from selenium import  webdriver
from selenium.webdriver.support.expected_conditions import NoSuchElementException
from selenium.webdriver.common.by import By
import  time as t

class WebDriver(object):
   def __init__(self,driver):
      # self.driver=webdriver.Chrome()
      self.driver=driver

   def findElement(self,*loc):
      '''单个元素的定位方式'''
      try:
         return self.driver.find_element(*loc)
      except NoSuchElementException as e:
         return e.args[0]

   def findElements(self,*loc):
      '''多个元素的定位方式'''
      try:
         return self.driver.find_elements(*loc)
      except NoSuchElementException as e:
         return e.args[0]

 

再到对象层page中创建一个软件包login.py,再写入代码,调用base.py中的元素:

from base.base import *
from selenium.webdriver.common.by import By

class Login(WebDriver):
    username=(By.ID,'freename')
    password=(By.ID,'freepassword')
    loginButton=(By.CLASS_NAME,'loginBtn')
    userError = (By.XPATH, '/html/body/div[1]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')

    def sendUsername(self,username):
        t.sleep(1)
        self.findElement(*self.username).send_keys(username)

    def sendPassword(self,password):
        t.sleep(1)
        self.findElement(*self.password).send_keys(password)

    def clickLogin(self):
        t.sleep(1)
        '''点击登录按钮'''
        self.findElement(*self.loginButton).click()

    def getUserError(self):
        t.sleep(1)
        '''获取用户名一栏的错误提示信息'''
        return self.findElement(*self.userError).text

 

再到测试层tset中创建一个软件包test_login.py,再写入代码,调用page中的元素:

import unittest
from page.login import Login
from selenium import webdriver

class LoginTest(unittest.TestCase,Login):
    def setUp(self) -> None:
        self.driver=webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.get('https://mail.sina.com.cn/#')
        self.driver.implicitly_wait(30)

    def tearDown(self) -> None:
        self.driver.close()

    def test_user_mull(self):
        '''登陆验证:验证用户名信息为空的错误提示信息'''
        self.sendUsername('')
        self.clickLogin()
        self.assertEqual(self.getUserError(),'请输入邮箱名')

    def test_email_fromat(self):
        '''登陆验证:邮箱名称不符合规范'''
        self.sendUsername('sadad')
        self.clickLogin()
        self.assertEqual(self.getUserError(),'您输入的邮箱名格式不正确')

    def test_user_passward_error(self):
        '''登陆验证:密码和账号不匹配'''
        self.sendUsername('[email protected]')
        self.sendPassword('1235')
        self.clickLogin()
        self.assertEqual(self.getUserError(),'登录名或密码错误')

标签:self,driver,base,UI,测试,自动化,import,div,def
From: https://www.cnblogs.com/yinxiaowen/p/16716408.html

相关文章