1.先封装base层(base_page.py);将相同的属性和行为进行封装;比如:每一个页面都需要经过元素定位、点击或者输入
2.再封装Page层(login_page.py):这是一个页面对象层,也就是把每一个页面当做一个对象,在每个对象中包含属性和行为。通过对base层的继承,使用base层定位好的属性和行为
3.最后封装TestCase层(testcase_login.py):通过unittest框架,进行用例的设计;如果登录,首先要先加载浏览器,然后方法窗口,引用login_page中方法和属性,最终能使用例运行成功
base:base_page.py
"""
每个页面相同属性以及行为;
"""
class basePage:
def __init__(self, driver):
self.driver = driver
"""
相同行为: 定位元素、点击、输入
"""
def locator(self,loc): #定位元素
#self.driver.find_element(By.XPATH,"")
return self.driver.find_element(*loc) #定位元素,find_element支持8大定位方法都支持。,函数中传递一个参数,引用的时候使用*拆包即可
def send_key(self,loc,value): #输入
self.locator(loc).send_keys(value) #先定位到元素,然后对应输入值;给函数传递参数
def click(self,loc): #点击
self.locator(loc).click()
def getURL(self,url):
self.driver.get(url)
Page:login_page.py
"""
page:页面对象层,把每个页面当作一个对象,在每个对象中包含属性和行为
通过继承base层
"""
import time
from selenium.webdriver.common.by import By
from base.base_page import basePage
class Login_page(basePage):# 通过基础base中base_page中basePage类,从而可以使用
#属性:每个页面的元素
login_button = (By.XPATH, "//span[text()='登录']") #登录按钮
username = (By.XPATH, "//input[@placeholder='请输入用户名或邮箱']")
password = (By.XPATH, "//input[@placeholder='请输入密码']")
login_submit = (By.XPATH, "//span[text()='立即登录']")
url = "https://ad.xxx.com.cn/home"
#行为(方法):登录
def login(self, username, password):
#加载项目地址:
#self.driver.get("https://ad.xxx.com.cn/home") #但是每一个页面都有自己的url;所以这个url可以放到当前页面属性中,这里直接掉调用接口;
#self.driver.get(self.url) #由于每个页面都有url,所以可以封装到base层
self.getURL(self.url)
time.sleep(3)
#点击登录按钮
self.click(self.login_button)
time.sleep(1)
#输入用户名
self.send_key(self.username, username) #第一个是属性名,第二个是属性值
time.sleep(1)
#输入密码
self.send_key(self.password, password)
time.sleep(1)
#点击立即登录
self.click(self.login_submit)
time.sleep(2)
TestCase:testcase_login.py
import time
import unittest
from selenium import webdriver
from Page.login_page import Login_page
"""
用例的实现与执行
"""
class TestCase_login(unittest.TestCase):
def test01_login(self):
#登录用例
#1. 先加载浏览器
self.driver = webdriver.Chrome()
time.sleep(1)
self.driver.maximize_window() #放大窗口
time.sleep(1)
Login = Login_page(self.driver)
Login.login(username="yiqyiq", password="Yiq123456")
if __name__ == '__main__':
unittest.main()



