700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python Web自动化测试学习-PO模型在自动化测试中的应用(2)

Python Web自动化测试学习-PO模型在自动化测试中的应用(2)

时间:2021-05-18 19:34:18

相关推荐

Python Web自动化测试学习-PO模型在自动化测试中的应用(2)

公共方法篇

用例生成

页面封装

test

pages

basePage.py

基础页面封装

# -*-coding:utf-8-*-import osfrom time import sleepfrom selenium import webdriverfrom mon.by import Byclass BasePage(object):"""基础页面"""def __init__(self, driver=None, base_url=None):"""基础的参数,webdriver、默认访问的url:param driver: 浏览器驱动:param base_url: 默认打开url,一般都是登录页面"""if driver is None:current_path = os.path.abspath(os.path.dirname(__file__))driver_path = current_path + '/../../drivers/chromedriver.exe'self.driver = webdriver.Chrome(driver_path)else:self.driver = driverif base_url is None:self.base_url = 'http://localhost:21248/#/'else:self.base_url = base_url# 设置默认打开的页面self.open_page()def open_page(self):"""打开默认页面"""self.driver.maximize_window()self.driver.implicitly_wait(10)self.driver.get(self.base_url)sleep(1)def close_page(self):"""关闭页面"""return self.driver.close()def quit_driver(self):"""关闭页面并且退出程序"""return self.driver.quit()def find_element(self, by, element):"""返回单个定位元素"""sleep(1)return self.driver.find_element(by, element)def find_elements(self, by, element):"""返回一组定位元素"""sleep(1)return self.driver.find_elements(by, element)def switch_alert(self):"""返回弹窗页面"""sleep(1)return self.driver.switch_to.alertdef select_menu(self, menu_text=None):"""菜单选择"""sleep(1)menus_element = self.driver.find_elements(By.CSS_SELECTOR, "#menu>div>h4")for menu in menus_element:# replace(" ", "")去掉字符串中的空格if menu.text.replace(" ", "") == menu_text.replace(" ", ""):return menu.click()print(menu_text + "未找到")returndef log_out(self):"""退出登录"""return self.select_menu("退出登录")

test

pages

loginPage.py

登录页面封装

# -*-coding:utf-8-*-import osfrom mon.by import Byfrom test.pages.basePage import BasePagefrom utils.readConfig import ReadConfigclass LoginPage(BasePage):"""登录页面"""def email_element(self):"""邮箱地址"""return self.find_element(By.CLASS_NAME, "email")def password_element(self):"""密码"""return self.find_element(By.CLASS_NAME, "password")def login_button(self):"""登录按钮"""return self.find_element(By.CSS_SELECTOR, ".login-btn>input[value='登 录']")def email_error_element(self):"""邮箱地址错误"""return self.find_element(By.CSS_SELECTOR, ".email+div.msg")def password_error_element(self):"""密码错误"""return self.find_element(By.CSS_SELECTOR, ".password+div.msg")def login_fail_element(self):"""登录失败"""return self.switch_alert()def login(self, email=None, password=None):"""登录操作"""account_email, account_password = self.get_account()if email is None:email = account_emailelse:email = emailif password is None:password = account_passwordself.email_element().send_keys(email)self.password_element().send_keys(password)self.login_button().click()@staticmethoddef get_account():"""获取默认邮箱地址和密码"""current_path = os.path.abspath(os.path.dirname(__file__))json_path = current_path + '/../../config/base_data.json'account = ReadConfig().read_json(json_path)return account['email'], account['password']if __name__ == '__main__':a = LoginPage()a.login()a.quit_driver()

test

pages

homePage.py

主页页面封装

# -*-coding:utf-8-*-from time import sleepfrom mon.by import Byfrom test.pages.loginPage import LoginPagefrom mon.tableOperation import TableOperationclass HomePage(LoginPage):"""主页页面"""# 检索def search_input_element(self):"""检索输入框"""return self.find_element(By.ID, "search-input")def search_button_element(self):"""检索按钮"""return self.find_element(By.CLASS_NAME, "search")# 按钮def add_button_element(self):"""新增按钮"""return self.find_element(By.ID, "add")def edit_button_element(self):"""编辑按钮"""return self.find_element(By.ID, "edt")def delete_button_element(self):"""删除按钮"""return self.find_element(By.ID, "del")# 编辑弹窗def edit_code_element(self):"""学号输入框"""return self.find_element(By.CSS_SELECTOR, "#add-dialog .code")def edit_name_element(self):"""姓名输入框"""return self.find_element(By.CSS_SELECTOR, "#add-dialog .name")def edit_sex_element(self):"""性别输入框"""return self.find_element(By.CSS_SELECTOR, "#add-dialog .sex")def edit_grader_element(self):"""年级输入框"""return self.find_element(By.CSS_SELECTOR, "#add-dialog .grader")def edit_confirm_button_element(self):"""编辑确定按钮"""return self.find_element(By.CSS_SELECTOR, "#add-dialog #confirm")def edit_cancel_button_element(self):"""编辑取消按钮"""return self.find_element(By.CSS_SELECTOR, "#add-dialog #cancel")# 删除弹窗def del_confirm_button_element(self):"""删除确定按钮"""return self.find_element(By.CSS_SELECTOR, "#del-dialog #confirm")def del_cancel_button_element(self):"""删除取消按钮"""return self.find_element(By.CSS_SELECTOR, "#del-dialog #cancel")# 页面操作方法def search(self, text):"""检索操作"""self.search_input_element().clear()self.search_input_element().send_keys(text)self.search_button_element().click()def edit_dialog(self, code=None, name=None, sex=None, grader=None, button=None):"""编辑弹窗操作"""if code is not None:self.edit_code_element().clear()self.edit_code_element().send_keys(code)if name is not None:self.edit_name_element().clear()self.edit_name_element().send_keys(name)if sex is not None:self.edit_sex_element().clear()self.edit_sex_element().send_keys(sex)if grader is not None:self.edit_grader_element().clear()self.edit_grader_element().send_keys(grader)if button == "确定":self.edit_confirm_button_element().click()elif button == "取消":self.edit_cancel_button_element().click()else:print("编辑弹窗中按钮只能是确定和取消")def add_data(self, code, name, sex=None, grader=None, button="确定"):"""由于code、name为必输项,所有一定要接收参数但sex、grader为非必输项,所有可以不用传值,默认参数设置为None:param code:学号,必输项:param name:姓名,必输项:param sex:性别,非必输:param grader:年级,非必输:param button:新增时按钮一般都是确认按钮,所有按钮的默认值传入确定:return:"""self.add_button_element().click()self.edit_dialog(code, name, sex, grader, button)def edit_data(self, header_text, row_text, code=None, name=None, sex=None, grader=None, button="确定"):"""编辑数据"""# 使用row_click()方法是为了直接选择要编辑的数据TableOperation(self.driver).row_click(header_text, row_text)self.edit_button_element().click()self.edit_dialog(code, name, sex, grader, button)def delete_data(self, header_text, row_text, button="确定"):"""编辑数据"""# 使用row_click()方法是为了直接选择要删除的数据TableOperation(self.driver).row_click(header_text, row_text)self.delete_button_element().click()if button == "确定":self.del_confirm_button_element().click()elif button == "取消":self.del_cancel_button_element().click()else:print("编辑弹窗中按钮只能是确定和取消")"""测试代码if __name__ == '__main__':from selenium import webdriverdriver = webdriver.Chrome()a = LoginPage(driver)a.login()home = HomePage(driver)home.add_data('1001', "张三")home.search("张三")home.edit_data('姓 名', "张三", name="李四")home.search("李四")sleep(1)home.delete_data('姓 名', "李四")sleep(3)a.quit_driver()"""

test

pages

aboutPage.py

关于我们页面封装

# -*-coding:utf-8-*-from mon.by import Byfrom test.pages.loginPage import LoginPageclass AboutPage(LoginPage):"""关于我们页面"""def about_element(self):"""关于我们页面判断元素"""return self.find_element(By.CSS_SELECTOR, "#about h1")

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。