Appium独立测试自动化初始化脚本

1、查看环境初始化参数

确保appium已经开起来了,设置ip ,并点击启动

打开夜神模拟器,点击工具--设置

最下面的版本说明,双击进去

版本号这里再去单击。

直到进入到开发者模式。

可能我们不是开发者模式打开的状态,所以软件访问模拟器时,它有可能不让我们连。

要重启一下模拟器

重启模拟器之后,开发者模式才能生效。

此时再用命令行查看,可以看到设备号。

caps={
        'platformName':'Android',               #设置platformName:手机系统名称Android
        'platformVersion':'7.1.2',              # #设置platformVersion:手机系统版本
        'deviceName':'127.0.0.1:52001' ,        #设置deviceName:设备名称
        'appPackage':'uni.UNI765428A',          #设置appPackage:被测程序包名
        'appActivity':'io.dcloud.PandoraEntry'  #设置appActivity:被测程序活动名
}

手机端参数查看命令有那些。每个人设备及端口号不一样,所以需要单独看。

adb  devices

查看包名

adb shell dumpsys activity activities |findstr mFocusedActivity

打开appium Inspector ,开始定位元素。

比如这个id,先点1混合定位模式,再点2开始定位,点3要定位的元素,最后拷贝它的id或者xpath

定位命令和web没什么不同

driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()

2、test_loginV1.py  跑通流程

先导入必备的包及写上版本说明

#*****************************************
#v1.0:app独立自动化测试 脚本--初始化登录
#*****************************************
#导入类库
import time

from appium.webdriver.webdriver import WebDriver
from appium.webdriver.webdriver import By
#手机参数初始化
#查询程序包名的命令:adb shell dumpsys activity activities| findstr mFocusedActivity#设置appPackage:被测程序包名

定义程序包名的参数


caps={
        'platformName':'Android',               #设置platformName:手机系统名称Android
        'platformVersion':'7.1.2',              # #设置platformVersion:手机系统版本
        'deviceName':'127.0.0.1:52001' ,        #设置deviceName:设备名称
        'appPackage':'uni.UNI765428A',          #设置appPackage:被测程序包名
        'appActivity':'io.dcloud.PandoraEntry'  #设置appActivity:被测程序活动名
}
#启动appium
driver=WebDriver('http://127.0.0.1:4723/wd/hub',caps)

点击允许按钮

#进行元素定位
#点击允许按钮
time.sleep(3)
driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()

#允许电话管理

time.sleep(2)
driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
#输入后台服务器地址

time.sleep(5)
xpath_service='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[1]/android.view.View/android.widget.EditText'
servicepath='https://lefeiwisdom-3pt-2t6a7-www.vip.51env.net'
driver.find_element(By.XPATH,xpath_service).clear()
time.sleep(1)
driver.find_element(By.XPATH,xpath_service).send_keys(servicepath)
#点击确定按钮
time.sleep(3)
xpath_ok="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[2]"
driver.find_element(By.XPATH,xpath_ok).click()
#点击验证码登录按钮

xpath_check='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[4]'
driver.find_element(By.XPATH,xpath_check).click()
time.sleep(2)
#输入手机号码
xpath_phone='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[5]/android.view.View/android.widget.EditText'
# id_phone='c52abd0b-3c7b-4b6f-a2a0-f386d56bebd8'
driver.find_element(By.XPATH,xpath_phone).send_keys('13800138001')
time.sleep(2)
#输入验证码
xpath_checkcode='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[6]/android.view.View/android.widget.EditText'
driver.find_element(By.XPATH,xpath_checkcode).send_keys('111111')
#接受协议
xpath_allow='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[9]'
time.sleep(2)
driver.find_element(By.XPATH,xpath_allow).click()
#登录按钮

time.sleep(2)
xpath_login='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[8]'
driver.find_element(By.XPATH,xpath_login).click()

完成登录

3、test_loginV2.py 面向过程的封装

#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法2:普通用户登录

传递参数driver

#*****************************************
#v2.0:app独立自动化测试 脚本--初始化登录
#优化:面向过程的封装
#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法2:普通用户登录
#****************************************
#导入类库
import time
from appium.webdriver.webdriver import WebDriver
from appium.webdriver.webdriver import By
#方法0:手机驱动参数初始化
def test_cpas_init():
        # 手机参数初始化
        # ******************************************************************************************
        # 查询程序包名的命令:adb shell dumpsys activity activities| findstr mFocusedActivity#设置appPackage:被测程序包名
        caps = {
                'platformName': 'Android',  # 设置platformName:手机系统名称Android
                'platformVersion': '7.1.2',  # #设置platformVersion:手机系统版本
                'deviceName': '127.0.0.1:52001',  # 设置deviceName:设备名称
                'appPackage': 'uni.UNI765428A',  # 设置appPackage:被测程序包名
                'appActivity': 'io.dcloud.PandoraEntry'  # 设置appActivity:被测程序活动名
        }

        # 启动appium
        driver = WebDriver('http://127.0.0.1:4723/wd/hub', caps)
        # **********************************************************************************
        return driver

#方法1:两个允许按钮+服务器地址+验证码登录
def test_login_init(driver):
         #进行元素定位
        #点击允许按钮
        time.sleep(2)
        driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
        #允许电话管理
        time.sleep(2)
        driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
        #*****************************************************************
        #输入后台服务器地址
        time.sleep(5)
        xpath_service='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[1]/android.view.View/android.widget.EditText'
        servicepath='https://lefeiwisdom-3pt-2t6a7-www.vip.51env.net'
        driver.find_element(By.XPATH,xpath_service).clear()
        time.sleep(1)
        driver.find_element(By.XPATH,xpath_service).send_keys(servicepath)
        #点击确定按钮
        time.sleep(3)
        #***********************************************************************
        xpath_ok="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[2]"
        driver.find_element(By.XPATH,xpath_ok).click()
        #***********************************************************************
        #点击验证码登录按钮
        time.sleep(4)
        xpath_check='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[4]'
        driver.find_element(By.XPATH,xpath_check).click()
        time.sleep(2)
        #********************************************************************************

#方法2:普通用户登录
def user_login_login(driver):
        #输入手机号码
        xpath_phone='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[5]/android.view.View/android.widget.EditText'
        # id_phone='c52abd0b-3c7b-4b6f-a2a0-f386d56bebd8'
        driver.find_element(By.XPATH,xpath_phone).send_keys('13800138001')
        time.sleep(2)
        #输入验证码
        xpath_checkcode='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[6]/android.view.View/android.widget.EditText'
        driver.find_element(By.XPATH,xpath_checkcode).send_keys('111111')
        #接受协议
        xpath_allow='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[9]'
        time.sleep(2)
        driver.find_element(By.XPATH,xpath_allow).click()
        #登录按钮
        time.sleep(2)
        xpath_login='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[8]'
        driver.find_element(By.XPATH,xpath_login).click()

if __name__ == '__main__':
    driver=test_cpas_init()
    test_login_init(driver)
    user_login_login(driver)

4、test_loginV3.py    作者登录

#v3.0:app独立自动化测试 脚本--初始化登录
#优化:面向过程的封装
#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法3:作者登录
#*****************************************
#v3.0:app独立自动化测试 脚本--初始化登录
#优化:面向过程的封装
#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法3:作者登录
#****************************************
#导入类库
import time
from appium.webdriver.webdriver import WebDriver
from appium.webdriver.webdriver import By
#方法0:手机驱动参数初始化
def test_cpas_init():
        # 手机参数初始化
        # ******************************************************************************************
        # 查询程序包名的命令:adb shell dumpsys activity activities| findstr mFocusedActivity#设置appPackage:被测程序包名
        caps = {
                'platformName': 'Android',  # 设置platformName:手机系统名称Android
                'platformVersion': '7.1.2',  # #设置platformVersion:手机系统版本
                'deviceName': '127.0.0.1:52001',  # 设置deviceName:设备名称
                'appPackage': 'uni.UNI765428A',  # 设置appPackage:被测程序包名
                'appActivity': 'io.dcloud.PandoraEntry'  # 设置appActivity:被测程序活动名
        }

        # 启动appium
        driver = WebDriver('http://127.0.0.1:4723/wd/hub', caps)
        # **********************************************************************************
        return driver

#方法1:两个允许按钮+服务器地址+验证码登录
def test_login_init(driver):
         #进行元素定位
        #点击允许按钮
        time.sleep(2)
        driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
        #允许电话管理
        time.sleep(2)
        driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
        #*****************************************************************
        #输入后台服务器地址
        time.sleep(5)
        xpath_service='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[1]/android.view.View/android.widget.EditText'
        servicepath='https://lefeiwisdom-3pt-2t6a7-www.vip.51env.net'
        driver.find_element(By.XPATH,xpath_service).clear()
        time.sleep(1)
        driver.find_element(By.XPATH,xpath_service).send_keys(servicepath)
        #点击确定按钮
        time.sleep(3)
        #***********************************************************************
        xpath_ok="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[2]"
        driver.find_element(By.XPATH,xpath_ok).click()
        #***********************************************************************
        #点击验证码登录按钮
        time.sleep(4)
        xpath_check='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[4]'
        driver.find_element(By.XPATH,xpath_check).click()
        time.sleep(2)
        #********************************************************************************

#方法3:作者登录
def test_author_login(driver):
        time.sleep(5)
        #切换到作者登录标签
        xpath_author='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[3]'
        driver.find_element(By.XPATH,xpath_author).click()
        time.sleep(2)
        #输入手机号码
        xpath_phone='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[5]/android.view.View/android.widget.EditText'
        # id_phone='c52abd0b-3c7b-4b6f-a2a0-f386d56bebd8'
        driver.find_element(By.XPATH,xpath_phone).send_keys('13900139001')
        time.sleep(2)
        #输入验证码
        xpath_checkcode='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[6]/android.view.View/android.widget.EditText'
        driver.find_element(By.XPATH,xpath_checkcode).send_keys('111111')
        #接受协议
        xpath_allow='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[9]'
        time.sleep(2)
        driver.find_element(By.XPATH,xpath_allow).click()
        #登录按钮
        time.sleep(2)
        xpath_login='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[8]'
        driver.find_element(By.XPATH,xpath_login).click()

if __name__ == '__main__':
    driver=test_cpas_init()
    test_login_init(driver)
    test_author_login(driver)

5、test_loginV4.py #优化:面向过程的封装,可选哪种方法的登录

#*****************************************
#v4.0:app独立自动化测试 脚本--初始化登录
#优化:面向过程的封装,可选哪种方法的登录
#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法2:普通用户登录/作者登录
#****************************************
#*****************************************
#v4.0:app独立自动化测试 脚本--初始化登录
#优化:面向过程的封装,可选哪种方法的登录
#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法2:普通用户登录/作者登录
#****************************************
#导入类库
import time
from appium.webdriver.webdriver import WebDriver
from appium.webdriver.webdriver import By
#方法0:手机驱动参数初始化
def test_cpas_init():
        # 手机参数初始化
        # ******************************************************************************************
        # 查询程序包名的命令:adb shell dumpsys activity activities| findstr mFocusedActivity#设置appPackage:被测程序包名
        caps = {
                'platformName': 'Android',  # 设置platformName:手机系统名称Android
                'platformVersion': '7.1.2',  # #设置platformVersion:手机系统版本
                'deviceName': '127.0.0.1:52001',  # 设置deviceName:设备名称
                'appPackage': 'uni.UNI765428A',  # 设置appPackage:被测程序包名
                'appActivity': 'io.dcloud.PandoraEntry'  # 设置appActivity:被测程序活动名
        }

        # 启动appium
        driver = WebDriver('http://127.0.0.1:4723/wd/hub', caps)
        # **********************************************************************************
        return driver

#方法1:两个允许按钮+服务器地址+验证码登录
def test_login_init(driver):
         #进行元素定位
        #点击允许按钮
        time.sleep(2)
        driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
        #允许电话管理
        time.sleep(2)
        driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
        #*****************************************************************
        #输入后台服务器地址
        time.sleep(5)
        xpath_service='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[1]/android.view.View/android.widget.EditText'
        servicepath='https://lefeiwisdom-3pt-2t6a7-www.vip.51env.net'
        driver.find_element(By.XPATH,xpath_service).clear()
        time.sleep(1)
        driver.find_element(By.XPATH,xpath_service).send_keys(servicepath)
        #点击确定按钮
        time.sleep(3)
        #***********************************************************************
        xpath_ok="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[2]"
        driver.find_element(By.XPATH,xpath_ok).click()
        #***********************************************************************
        #点击验证码登录按钮
        time.sleep(4)
        xpath_check='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[4]'
        driver.find_element(By.XPATH,xpath_check).click()
        time.sleep(2)
        #********************************************************************************



#方法2:作者登录
def test_author_login(driver,usertype):
        time.sleep(5)
        if usertype==1:
                #切换到作者登录标签
                xpath_author='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[3]'
                driver.find_element(By.XPATH,xpath_author).click()
                userphone='13900139001'
        else:
                userphone='13800138001'
        time.sleep(2)
        #输入手机号码
        xpath_phone='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[5]/android.view.View/android.widget.EditText'
        # id_phone='c52abd0b-3c7b-4b6f-a2a0-f386d56bebd8'
        driver.find_element(By.XPATH, xpath_phone).send_keys(userphone)
        time.sleep(2)
        #输入验证码
        xpath_checkcode='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[6]/android.view.View/android.widget.EditText'
        driver.find_element(By.XPATH,xpath_checkcode).send_keys('111111')
        #接受协议
        xpath_allow='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[9]'
        time.sleep(2)
        driver.find_element(By.XPATH,xpath_allow).click()
        #登录按钮
        time.sleep(2)
        xpath_login='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[8]'
        driver.find_element(By.XPATH,xpath_login).click()

if __name__ == '__main__':
    #进行哪种方法的登录
    #usertype=0 表示普通用户登录,=1为作者登录
    usertype=int(input("请输入数字,0 表示普通用户登录,1为作者登录"))
    driver=test_cpas_init()
    test_login_init(driver)
    test_author_login(driver,usertype)

6、test_loginV5.py #优化:面向对象的封装,可选哪种方法的登录

#v5.0:app独立自动化测试 脚本--初始化登录
#优化:面向对象的封装,可选哪种方法的登录
#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法2:普通用户登录/作者登录
#将以上方法封装到测试类中
#*****************************************
#v5.0:app独立自动化测试 脚本--初始化登录
#优化:面向对象的封装,可选哪种方法的登录
#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法2:普通用户登录/作者登录
#将以上方法封装到测试类中
#****************************************
#导入类库
import time
from appium.webdriver.webdriver import WebDriver
from appium.webdriver.webdriver import By
class Test_login():
        #方法0:手机驱动参数初始化
        def test_cpas_init(self):
                # 手机参数初始化
                # ******************************************************************************************
                # 查询程序包名的命令:adb shell dumpsys activity activities| findstr mFocusedActivity#设置appPackage:被测程序包名
                caps = {
                        'platformName': 'Android',  # 设置platformName:手机系统名称Android
                        'platformVersion': '7.1.2',  # #设置platformVersion:手机系统版本
                        'deviceName': '127.0.0.1:52001',  # 设置deviceName:设备名称
                        'appPackage': 'uni.UNI765428A',  # 设置appPackage:被测程序包名
                        'appActivity': 'io.dcloud.PandoraEntry'  # 设置appActivity:被测程序活动名
                }

                # 启动appium
                driver = WebDriver('http://127.0.0.1:4723/wd/hub', caps)
                # **********************************************************************************
                return driver

        #方法1:两个允许按钮+服务器地址+验证码登录
        def test_login_init(self,driver):
                 #进行元素定位
                #点击允许按钮
                time.sleep(2)
                driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
                #允许电话管理
                time.sleep(2)
                driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
                #*****************************************************************
                #输入后台服务器地址
                time.sleep(5)
                xpath_service='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[1]/android.view.View/android.widget.EditText'
                servicepath='https://lefeiwisdom-3pt-2t6a7-www.vip.51env.net'
                driver.find_element(By.XPATH,xpath_service).clear()
                time.sleep(1)
                driver.find_element(By.XPATH,xpath_service).send_keys(servicepath)
                #点击确定按钮
                time.sleep(3)
                #***********************************************************************
                xpath_ok="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[2]"
                driver.find_element(By.XPATH,xpath_ok).click()
                #***********************************************************************
                #点击验证码登录按钮
                time.sleep(4)
                xpath_check='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[4]'
                driver.find_element(By.XPATH,xpath_check).click()
                time.sleep(2)
                #********************************************************************************



        #方法2:普通用户登录/作者登录
        def test_author_login(self,driver,usertype):
                time.sleep(5)
                if usertype==1:
                        #切换到作者登录标签
                        xpath_author='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[3]'
                        driver.find_element(By.XPATH,xpath_author).click()
                        userphone='13900139001'
                else:
                        userphone='13800138001'
                time.sleep(2)
                #输入手机号码
                xpath_phone='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[5]/android.view.View/android.widget.EditText'
                # id_phone='c52abd0b-3c7b-4b6f-a2a0-f386d56bebd8'
                driver.find_element(By.XPATH, xpath_phone).send_keys(userphone)
                time.sleep(2)
                #输入验证码
                xpath_checkcode='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[6]/android.view.View/android.widget.EditText'
                driver.find_element(By.XPATH,xpath_checkcode).send_keys('111111')
                #接受协议
                xpath_allow='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[9]'
                time.sleep(2)
                driver.find_element(By.XPATH,xpath_allow).click()
                #登录按钮
                time.sleep(2)
                xpath_login='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[8]'
                driver.find_element(By.XPATH,xpath_login).click()

if __name__ == '__main__':
    #进行哪种方法的登录
    #usertype=0 表示普通用户登录,=1为作者登录
    usertype=int(input("请输入数字,0 表示普通用户登录,1为作者登录"))
    #实例化测试类对象
    obj=Test_login()
    driver=obj.test_cpas_init()
    obj.test_login_init(driver)
    obj.test_author_login(driver,usertype)

7、test_loginV6.py  将以上方法封装到测试类中,将参数变为属性

#*****************************************
#v6.0:app独立自动化测试 脚本--初始化登录
#优化:面向对象的封装,可选哪种方法的登录
#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法2:普通用户登录/作者登录
#将以上方法封装到测试类中,将参数变为属性
#****************************************
#*****************************************
#v6.0:app独立自动化测试 脚本--初始化登录
#优化:面向对象的封装,可选哪种方法的登录
#方法0:手机驱动参数输出化设置
#方法1:两个允许按钮+服务器地址+验证码登录
#方法2:普通用户登录/作者登录
#将以上方法封装到测试类中,将参数变为属性
#****************************************
#导入类库
import time
from appium.webdriver.webdriver import WebDriver
from appium.webdriver.webdriver import By
class Test_login():
        #方法0:手机驱动参数初始化
        def test_cpas_init(self):
                # 手机参数初始化
                # ******************************************************************************************
                # 查询程序包名的命令:adb shell dumpsys activity activities| findstr mFocusedActivity#设置appPackage:被测程序包名
                caps = {
                        'platformName': 'Android',  # 设置platformName:手机系统名称Android
                        'platformVersion': '7.1.2',  # #设置platformVersion:手机系统版本
                        'deviceName': '127.0.0.1:52001',  # 设置deviceName:设备名称
                        'appPackage': 'uni.UNI765428A',  # 设置appPackage:被测程序包名
                        'appActivity': 'io.dcloud.PandoraEntry'  # 设置appActivity:被测程序活动名
                }

                # 启动appium
                self.driver = WebDriver('http://127.0.0.1:4723/wd/hub', caps)
                # **********************************************************************************


        #方法1:两个允许按钮+服务器地址+验证码登录
        def test_login_init(self):
                 #进行元素定位
                #点击允许按钮
                time.sleep(2)
                self.driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
                #允许电话管理
                time.sleep(2)
                self.driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
                #*****************************************************************
                #输入后台服务器地址
                time.sleep(5)
                xpath_service='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[1]/android.view.View/android.widget.EditText'
                servicepath='https://lefeiwisdom-3pt-2t6a7-www.vip.51env.net'
                self.driver.find_element(By.XPATH,xpath_service).clear()
                time.sleep(1)
                self.driver.find_element(By.XPATH,xpath_service).send_keys(servicepath)
                #点击确定按钮
                time.sleep(3)
                #***********************************************************************
                xpath_ok="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[2]"
                self.driver.find_element(By.XPATH,xpath_ok).click()
                #***********************************************************************
                #点击验证码登录按钮
                time.sleep(4)
                xpath_check='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[4]'
                self.driver.find_element(By.XPATH,xpath_check).click()
                time.sleep(2)
                #********************************************************************************



        #方法2:普通用户登录/作者登录
        def test_author_login(self,usertype):
                time.sleep(5)
                if usertype==1:
                        #切换到作者登录标签
                        xpath_author='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[3]'
                        self.driver.find_element(By.XPATH,xpath_author).click()
                        userphone='13900139001'
                else:
                        userphone='13800138001'
                time.sleep(2)
                #输入手机号码
                xpath_phone='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[5]/android.view.View/android.widget.EditText'
                # id_phone='c52abd0b-3c7b-4b6f-a2a0-f386d56bebd8'
                self.driver.find_element(By.XPATH, xpath_phone).send_keys(userphone)
                time.sleep(2)
                #输入验证码
                xpath_checkcode='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[6]/android.view.View/android.widget.EditText'
                self.driver.find_element(By.XPATH,xpath_checkcode).send_keys('111111')
                #接受协议
                xpath_allow='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[9]'
                time.sleep(2)
                self.driver.find_element(By.XPATH,xpath_allow).click()
                #登录按钮
                time.sleep(2)
                xpath_login='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[8]'
                self.driver.find_element(By.XPATH,xpath_login).click()

if __name__ == '__main__':
    #进行哪种方法的登录
    #usertype=0 表示普通用户登录,=1为作者登录
    usertype=int(input("请输入数字,0 表示普通用户登录,1为作者登录"))
    #实例化测试类对象
    obj=Test_login()
    obj.test_cpas_init()
    obj.test_login_init()
    obj.test_author_login(usertype)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值