from selenium.webdriver.common.by import By
classHomePage:# 首页登录按钮
login_button_locator =(By.XPATH,'//a[text()="登录"]')#点击首页登录按钮defclick_login(self,driver):
driver.find_element(*self.login_button_locator).click()
登录页面的操作
需要有登录页面的元素定位和页面操作
元素定位:用户名输入框,密码输入框,登录按钮,登录成功的标志
操作:输入用户名,输入密码,点击登录
driver从外部传入,输入的用户名和密码信息也需要参数化
代码示例:
from selenium.webdriver.common.by import By
classLogin:# 登录输入框
phone_box_locator =(By.XPATH,'//div[@class="login-con"]//input[contains(@placeholder,"手机号")]')# 密码输入框
pwd_box_locator =(By.XPATH,'//div[@class="login-con"]//input[contains(@placeholder,"密码")]')# 登录按钮
login_locator =(By.XPATH,'//div[@class="login-con"]//a[text()="登录"]')# 判断登录成功
login_success =(By.XPATH,'//div[@id="__layout"]//span[@class="text"]')#登录操作deflogin(self,driver,phone,pwd):#输入账号
driver.find_element(*self.phone_box_locator).send_keys(phone)#输入密码
driver.find_element(*self.pwd_box_locator).send_keys(pwd)#点击登录按钮
driver.find_element(*self.login_locator).click()
等待操作
需要封装等待可见,等待存在,等待可点击的场景
其他场景看情况封装
需要做异常处理,如果符合条件,就返回True,不符合就返回False,方便断言
代码示例如下:
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
classWaitOperate:# 等待元素可见defwait_located(self, driver, ele):try:return WebDriverWait(driver,20).until(EC.visibility_of_element_located(ele))except Exception as e:print(e)# 等待元素可点击defwait_click(self, driver, ele):try:return WebDriverWait(driver,20).until(EC.element_to_be_clickable(ele))except Exception as e:print(e)# 等待元素存在defwait_presence(self, driver, ele):try:return WebDriverWait(driver,20).until(EC.presence_of_element_located(ele))except Exception as e:print(e)
运行界面
需要定义driver
需要导入不同页面的操作和等待操作
需要调用不同页面中的不同方法,来确认运行是否成功
代码示例如下:
import time
from selenium import webdriver
from Hw.hw_2023_1016_yiyi.pagebjects.login_page import Login
#导入登录页面的类from Hw.hw_2023_1016_yiyi.pagebjects.home_page import HomePage
#导入首页的类from Hw.hw_2023_1016_yiyi.pagebjects.wait_operate import WaitOperate
#导入等待操作的类deflogin():#定义driverwith webdriver.Chrome()as driver:
driver.get("http://mall.lemonban.com:3344")
driver.maximize_window()
HomePage().click_login(driver)#首页点击登录按钮#传入用户名和密码的元素
Login().login(driver,"lemon_auto","lemon123456")#进行登录操作
time.sleep(2)
actual= WaitOperate().wait_located(driver,Login.login_success)#判断登录成功
ex =Truetry:# 断言assert actual==ex
print("断言正确")except Exception:raiseif __name__ =='__main__':
login()=======================run_result=================
断言正确