zoukankan      html  css  js  c++  java
  • 第一次appium自动化

    今天,自己独自做了一下app自动化,从搭环境到写好一个脚本花了很长时间。用的主要环境是python3.7+appium+sdk+夜神模拟器。appium环境搭建较于复杂,这里就不累述,参考百度教程。

    首先先导入模块 from appium import webdriver,获取驱动对象。驱动对象可以帮助我们完成,脚本跟手机之间的交互操作。

    然后声明手机驱动对象 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) 中间跟了2个参数http://127.0.0.1:4723/wd/hub 代表,appium的地址和端口。wd是指的webdriver对象,hub是中心节点。desired_caps是跟的是手机启动参数,参数及其含义如下:

    desired_caps = {
    "platformName":"Android", #平台名称
    "platformVersion":"5.1", #系统版本号
    "deviceName":"127.0.0.1:62001", #设备号,用adb devices查看
    "appPackage":"com.xk.span.zutuan", #apk的包名 包名和启动名可以用这个命令查看:1,abd shell 进入shell目录下,2dumpsys activity | grep mFocusedActivity
    "appActivity":".module.main.ui.activity.MainActivity" #apk启动名或者叫启动的界面
    }
    包名和启动界面获取方式:先打开手机中你要获取包名的APP,用adb命令查看:1,abd shell 进入shell目录下,2,dumpsys activity | grep mFocusedActivity 如下图:

    参数以字典的形式组合起来,中间逗号隔开。定位元素先打开要操作app,然后在打开定位元素的工具,工具名为这个uiautomatorviewer.bat。安装了sdk就自带这个工具,去这个目录下找D:\software\SDK\android-sdk-windows\tools。具体以你的安装sdk目录位准。打开长这样。下图:

    其他没啥好说的了,就是定位元素咯,有个注意事项,运行脚本脚本前,打开你appium服务端,然后检查下设备有没有连接上,可以帮你省下许多报错。上菜鸟代码:
    # todo 实现自动登录美逛的功能,运行脚本前先用adb查看是否连接,运行成功后再次运行需退出登录
    from appium import webdriver
    import time
    
    
    class OpenMg():
        def __init__(self):
            '''打开APP及初始化工作'''
            desired_caps = {
                "platformName": "Android",
                "platformVersion": "5.1",
                "deviceName": "127.0.0.1:62001",
                "appPackage": "com.xk.span.zutuan",
                "appActivity": ".module.main.ui.activity.MainActivity"}
            self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
            time.sleep(6)
    
        def register_page(self):
            '''由注册切换到输入账号界面'''
            self.driver.find_element_by_id('com.xk.span.zutuan:id/tv_tab_txt4').click()
            self.driver.find_element_by_id('com.xk.span.zutuan:id/stv_user_un_login').click()
            time.sleep(0.01)
            self.driver.find_element_by_id('com.xk.span.zutuan:id/stv_login_mobile').click()
            time.sleep(0.01)
    
        def input_account(self, phone, password):
            '''输入账号密码到个人中心界面'''
            self.driver.find_element_by_id('com.xk.span.zutuan:id/et_mobile').send_keys(phone)
            self.driver.find_element_by_id('com.xk.span.zutuan:id/password').click()
            self.driver.find_element_by_id('com.xk.span.zutuan:id/et_password').send_keys(password)
            self.driver.find_element_by_xpath('//*[@text="登录"]').click()
            time.sleep(3.9)
            self.driver.find_element_by_xpath('//*[@text="个人中心"]').click()
    
        def finally_result(self):
            '''断言结果是否正确'''
            if '邀请码: 182635' in self.driver.page_source:
                print('邀请码正确,登录成功')
            else:
                print('邀请码错误,登录失败')
        def click_exit(self):
            '''点击退出,清理登录信息'''
            time.sleep(0.5)
            self.driver.find_element_by_id('com.xk.span.zutuan:id/iv_user_logout').click()
            time.sleep(0.5)
            self.driver.find_element_by_xpath('//*[@text="确定"]').click()
    
        def closed(self):
            '''关闭驱动对象'''
            time.sleep(3)
            self.driver.quit()
    
    def main():
        '''根据操作顺序,调用方法执行'''
        mg = OpenMg()
        mg.register_page()
        mg.input_account('1582', 'mg123456')
        mg.finally_result()
        mg.click_exit()
        mg.closed()
    
    if __name__ == '__main__':
        main()
    

      



  • 相关阅读:
    024 Go语言基础之文件操作
    023 Go语言标准库之log
    022 Go语言标准库之flag
    021 Go语言标准库之time
    019 Go语言基础之单元测试
    020 Go语言标准库之fmt
    数据导出为Excel(未完)
    .net+EF+mvc通过EasyUI的DataGrid实现增删改查
    EasyUI入门,DataGrid(数据表格)
    基于jQuery的用户界面插件集合---EasyUI
  • 原文地址:https://www.cnblogs.com/xiamaojjie/p/11406739.html
Copyright © 2011-2022 走看看