把CSDN登录功能实现自动化
一、搭建自动化测试框架
二、准备测试数据
Python + selenium 自动化测试----读取CSV文档中的测试数据
三. 先准备page层
把界面元素定义成属性:可以直接写到class中; 就类似于变量
属性名 = 属性值 #属性名自定义; 属性值:是界面元素的定位信息
把定位元素并且操作定义成方法
Class xxxpage:
属性名 = 属性值 #属性名自定义; 属性值:是界面元素的定位信息
def 方法名():
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
class CsdnPage():
#使用F12定位用户名输入框
username = By.XPATH,'//*[placeholder="手机号"]'
#使用F12定位密码输入框
password = By.XPATH,'//*[placeholder="6位数字验证码"]'
def csdn_login_page(self,driver,username,password):
#输入用户名
keys_username = WebDriverWait(driver,10,0.2).until(expected_conditions.presence_of_element_located((self.username)))
keys_username.send_keys(username)
# 输入验证码
keys_password = WebDriverWait(driver,10,0.2).until(expected_conditions.presence_of_element_located((self.password)))
keys_password.send_keys(password)
备注:
页面元素定位不熟悉的老铁自己可以去抽个充电,示例中使用了xpath的高级用法
Python + selenium 元素定位 (一)----driver.find_element_by_xxx()
Python + selenium 元素定位(二) ----driver.find_elements_by_xxx()
Python + selenium 元素定位(三),By方法查找元素----driver.find_element(By.XXX, “selector”)
Python + selenium 元素定位(四),By方法查找元素----driver.find_elementS(By.XXX, “selector”)
Python + selenium 元素定位(五)-----css selector 的高级用法
Python + selenium 元素定位(六)----Xpath的高级用法
2. 准备业务层:
from src.common.get_test_file import GetTestInfo
from src.pages.csdn_page import CsdnLoginPage
class CsdnLoginBusiness(CsdnLoginPage):
def login_function(self,driver,line):
#读取测试数据
data = GetTestInfo().get_test_data("login_data.csv",line)
#读取到的测试数据填写到对应的输入框中
CsdnLoginPage().csdn_login_page(driver,data[0],data[1])
备注
读取测试数据
把数据整合到登录页面上。
3.准备用例层
注:
执行用用例是首先进行浏览器初始化,一般浏览器初始化用的比较多所以单另分装个函数放在common中直接调用即可
使用unittest框架编写测试用例
import unittest
from selenium.webdriver.android import webdriver
from src.business.scdn_b import CsdnLoginBusiness
from src.common.General_method import GeneralMethod
class LoginTestCase(unittest.TestCase):
def setUp(self):
#初始化浏览器对其赋值
self.driver,self.Wait = GeneralMethod().chushihua_driver("csdn_url")
# 用例一:正常登录用例
def test_normal_login(self):
"登录成功,断言成功"
try:
#测试用例,输入合法的用户名和密码登录
CsdnLoginBusiness().login_function(self.driver,1)
except:
#用例执行失败后截取图片
GeneralMethod().get_picture(self.driver,"正常登录用例")
raise
def tearDown(self):
# 测试用例执行完毕关闭浏览器
self.driver.quit()