封装POM
Web,APP端都有不同的页面
创建 pom 包 专门存放不同的页面,对页面进行管理。
创建pom的基类 basepage
pom/basepage.py
"""所有页面的基类"""from appium.webdriver.webdriver import WebDriverclass BasePage:def __init__(self,driver:WebDriver):self.driver = driver@propertydef toast_text(self):toast = self.driver.find_element_by_xpath('//android.widget.Toast')return toast.text
Web 页面的模型
pom/webpage/mainpage.py
"""Web 页面的主页"""from pom.basepage import BasePagefrom pom.webpage.loginpage import LoginPagefrom pom.webpage.settingpage import SettingPageclass MainPage(BasePage):def go_to_mainpage(self):self.driver.get('http://47.100.175.62:3000/')return selfdef go_to_login_page(self):"""打开登录页面:return:"""self.driver.find_element_by_xpath('//a[@href="/signin"]').click()return LoginPage(self.driver)def go_to_setting_page(self):"""到达设置页面:return:"""self.driver.find_element_by_xpath('//a[@href="/setting"]').click()return SettingPage(self.driver)
pom/webpage/loginpage.py
"""登录页面"""from pom.basepage import BasePageclass LoginPage(BasePage):def login_with_username_passwd(self,username,passwd):self.driver.find_element_by_id('name').send_keys(username)self.driver.find_element_by_id('pass').send_keys(passwd)self.driver.find_element_by_xpath('//*[@type="submit"]').click()
pom/webpage/settingpage.py
"""设置页面"""from pom.basepage import BasePageclass SettingPage(BasePage):@propertydef accesstoken(self):"""获取token:return:"""return self.driver.find_element_by_id('accessToken').text
app的页面模型
pom/apppage/mainpage.py
"""手机app的主页"""import timefrom pom.apppage.loginpage import LoginPagefrom pom.basepage import BasePageclass MainPage(BasePage):def go_to_login_page(self):"""到达登录"""self.driver.find_element_by_xpath('//*[@resource-id="org.cnodejs.android.md:id/toolbar"]/android.widget.ImageButton').click()time.sleep(1)self.driver.find_element_by_id('org.cnodejs.android.md:id/tv_login_name').click()return LoginPage(self.driver)
pom/apppage/loginpage.py
"""手机的登录页面"""from pom.basepage import BasePageclass LoginPage(BasePage):def login_with_accesstoken(self,token):self.driver.find_element_by_id('org.cnodejs.android.md:id/edt_access_token').send_keys(token)self.driver.find_element_by_id('org.cnodejs.android.md:id/btn_login').click()return self
创建测试用例
testcases/test_login.py
import timefrom pom.apppage.mainpage import MainPage as AMPfrom pom.webpage.mainpage import MainPage as WMPdef test_web_app_login(wdriver,adriver):# 从首页登录WMP(wdriver).go_to_mainpage()\.go_to_login_page()\.login_with_username_passwd('fanmao_36','123456')# 登录成功之后进入到设置页面获取token值token = WMP(wdriver).go_to_setting_page().accesstokenloginpage = AMP(adriver)\.go_to_login_page()\.login_with_accesstoken(token)assert loginpage.toast_text == "登录成功"
执行测试用例
