Appium自动化测试框架——POM模式

来看几个脚本分离具体实施

先看截图

POM模式说明.png
PO文件夹就是POM核心实施方法,也就是对每个页面元素进行元素及方法拆分整合;
TestCase文件夹对页面进行测试,当然你也也可以在这里面写上自己的case用例
我们看几个元素分离的例子:
base_page.py
author = 'damao'

from appium import webdriver

class Base(object):

    def __init__(self):
        pass

    """控制启动APP"""
    def remote_app(self):
        self.devices_env = {
            "platformName": "Android",
            "deviceName": "RKKDU17C12006192",
            "platformVersion": "8.0",
            "appPackage": "com.szyh.ui",  # apk包名
            "appActivity": "com.szyh.ui.login.WelcomeActivity",  # app的launchable-activity
            "unicodeKeyboard": True,
            "resetKeyboard": True
        }
        self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", self.devices_env)
login_page.py
author = 'damao'

from Appium_JDPE_Test.PO import base_page


class LoginPage(base_page.Base):
    """登陆页面元素维护"""
    user_name = "com.szyh.ui:id/userid" # 登陆页面用户名输入框
    pass_word =  "com.szyh.ui:id/pwd" # 登陆页面密码输入框
    login_btn = "com.szyh.ui:id/login" # 登陆页面”登陆“按钮
    full_screen =  "com.szyh.ui:id/cpi_welcome" # 启动页面”全屏显示“按钮
    enter_app =  "com.szyh.ui:id/btn_welcome_last" # 启动页面
    
    def set_username(self, username):
        name = self.driver.find_element_by_id(self.user_name)
        name.send_keys(username)  # 输入用户名

    def set_password(self, password):
        pwd = self.driver.find_element_by_id(self.pass_word)
        pwd.send_keys(password)  # 输入密码

    def click_login(self):
        loginbtn = self.driver.find_element_by_id(self.login_btn)
        loginbtn.click()  # 单击登录

    def set_fullscreen(self):
        fullscreen = self.driver.find_element_by_id(self.full_screen)
        fullscreen.click()  #  点击”全屏显示按钮“

    def to_enter_app(self):
        enterapp = self.driver.find_element_by_id(self.enter_app)
        enterapp.click() # 点击进入按钮进入APP
regist_user_page.py
author = 'damao'

from Appium_JDPE_Test.PO import base_page
import subprocess

"""点击首页用户注册按钮,进入用户注册页面"""

class RegistPage(base_page.Base):
    """注册页面元素维护"""
    regist_btu = "com.szyh.ui:id/textView2"  # 首页“没有账号?注册”按钮
    nickname = "com.szyh.ui:id/nicheng" # 昵称
    phone = "com.szyh.ui:id/phoneNo" # 手机号
    login_password = "com.szyh.ui:id/pwd"  # 登录密码
    confirm_password = "com.szyh.ui:id/repwd" # 确认密码
    check_out_btu = "com.szyh.ui:id/ck_agreen" # 勾选注册协议
    regist = "com.szyh.ui:id/registry_btn" # 注册按钮
    massage_box = "com.szyh.ui:id/check_code" # 短信验证码输入框
    massage_sub_btu = "com.szyh.ui:id/submit_btn" # 提交按钮

    def click_regist_btu(self):    # 点击首页“没有账号?注册”按钮
        self.driver.find_element_by_id(self.regist_btu).click()

    def set_nickname(self,nickname):  # 输入昵称
        self.driver.find_element_by_id(self.nickname).send_keys(nickname)
        # x = subprocess.check_output('adb devices', shell=True).split()[1][:-7]
        # self.driver.find_element_by_id(self.nickname).click()
        # subprocess.Popen('adb -s %s shell input text %s' % (x, nickname), shell=True)

    def set_phone(self,phone_nub): # 输入电话号码
        self.driver.find_element_by_id(self.phone).send_keys(phone_nub)

    def set_login_password(self,login_passwd):  # 输入登录密码
        self.driver.find_element_by_id(self.login_password).send_keys(login_passwd)

    def set_confirm_password(self,confirm_passwd):  # 确认输入登录密码
        self.driver.find_element_by_id(self.confirm_password).send_keys(confirm_passwd)

    def click_check_btu(self): # 勾选注册用户协议
        self.driver.find_element_by_id(self.check_out_btu).click()

    def click_regist(self): # 点击“注册”按钮
        self.driver.find_element_by_id(self.regist).click()

    def set_massage(self,msg): # 输入验证码
        self.driver.find_element_by_id(self.massage_box).send_keys(msg)

    def click_submsg_btu(self): # 点击验证码提交按钮
        self.driver.find_element_by_id(self.massage_sub_btu).click()
在命令这个py文件的时候,最好使用当前页面的名字来命名,这样一样就能看出来,
这些技巧和方法还是需要结合实际测试例子来熟悉和领悟
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 洞见SELENIUM自动化测试 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出...
    厲铆兄阅读 6,756评论 3 47
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,957评论 19 139
  • 基于 SELENIUM 的自动化测试架构 非常感谢各位查阅本篇文章,笔者在此感谢各位。 目前市面上有分门别类的自动...
    厲铆兄阅读 6,111评论 6 43
  • WebDriver 进阶 欢迎阅读WebDriver进阶讲义。本篇讲义将会重点介绍Selenium WebDriv...
    厲铆兄阅读 5,900评论 3 27
  • 2018年4月15日六组会议纪要 crystal信春爱 2018-04-15 07:26 · 字数 1306 · ...
    crystal信春爱阅读 281评论 0 0