# PO:page object 页面对象
# (开发模式MVC:MVVM)
# PO优势:
# 1.采用这种测试框架模式,可以减少代码的重复
# 2.可以提高测试用例的可读性
# 3.方便扩展与维护(尤其适用于UI界面频繁的更换的业务需求)
# 关于APP的一些API
# selectAlbumwithTitle()
# getArtitst()
# updateRating()
# 关于HTML页面的API:
# FindElementsWithClass() 查一个
# FindElementsWithClasss() 查多个
# getText()
# click()
# setText()
# 通过PO来设计,登陆163邮箱测试用例
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
# 1.)
class Page(object):
'''基础类,用于其他页面对象的继承'''
login_url = 'https://mail.qq.com'
url = '/'
def __init__(self,selenium_driver,base_url=login_url):
self.base_url = base_url
self.driver = selenium_driver
self.timeout = 20
def on_page(self):
print(self.driver.current_url)
print(self.base_url+self.url)
return self.driver.current_url == (self.base_url+self.url)
def _open(self,url):
url = self.base_url
self.driver.get(url)
self.driver.switch_to.frame(1)
print('------',self.on_page())
assert self.on_page(),'error'%url
def open(self):
self._open(self.base_url)
def find_element(self,*loc):
return self.driver.find_element(*loc)
# 2.)定义自己的登陆类
class loginPage(Page):
'''163邮箱登的模型'''
# 定义定位器
username_loc = (By.ID,'u')
password_loc = (By.ID,'p')
submit_loc = (By.ID,'login_button')
# Action 定义具体做什么
def type_username(self,username):
self.find_element(*self.username_loc).send_keys(username)
def type_password(self,password):
self.find_element(*self.password_loc).send_keys(password)
def sunmit(self):
self.find_element(*self.submit_loc).click()
# 3.)创建主函数调用函数
def test_use_login(driver,username,password):
'''测试一下,获取用户名和密码后是否可以登陆'''
login_page=loginPage(driver)
login_page.open()
login_page.type_username(username)
login_page.type_password(password)
login_page.sunmit()
# 4.)创建主函数调用测试函数main()
def main():
try:
driver = webdriver.Firefox()
username = '1760204760'
password = 'df555555'
test_use_login(driver,username,password)
sleep(3)
finally:
driver.close()
if __name__=='__main__':
main()
Python页面对象PO
最新推荐文章于 2024-04-30 11:11:45 发布