Page Object
是一种设计模式,它在测试自动化中已经成为流行的模式,用于增强测试维护和减少代码重复。页面对象是一个面向对象的类,用作AUT页面的接口。测试然后在需要与该页面的UlI交互时使用该页面对象类的方法。好处是,如果页面的U发生更改,测试本身不需要更改,只需要更改页面对象中的代码。随后,所有支持新UI的更改都位于一个位置。
原代码
代码结构分层
PO模型代码
Base:
class LoginBase:
def login_input(self, input_placeholder):
"""
登录用户名、密码输入框
:param input_placeholder:
:return:
"""
return "//input[@placeholder='" + input_placeholder + "']"
if __name__ == '__main__':
# print(LoginBase().login_input("密码"))
print(LoginBase().login_button("登录"))
Page
from base.LoginBase import LoginBase
class LoginPage(LoginBase):
def login_input_value(self, driver, input_placeholder, input_value):
"""
登录页输入值input_placeholder
:param driver:
:param input_placeholder:
:param input_value:
:return:
"""
log.info("输入" + input_placeholder + "为:" + str(input_value))
input_xpath = self.login_input(input_placeholder)#因为继承的LoginBase,所以直接self调用login_input方法
return driver.find_element_by_xpath(input_xpath).send_keys(input_value)
Testcase
from config.driver_config import DriverConfig
from page.LoginPage import LoginPage
class TestLogin:
def test1_login(self):
driver =DriverConfig().driver_config()
driver.get("http://www.tcpjwtester.top")
sleep(3)
LoginPage().login_input_value(driver,"用户名","周杰伦")
LoginPage().login_input_value(driver, "密码", "123456")
LoginPage().click_login(driver,"登录")
driver.quit()