day21-测试自动化之Appium的基础操作API

一、在脚本内启动其他app

        1.1.应用场景

                如果一个应用需要跳转到另外一个应用,就可以使用这个api进行应用的跳转,就像我们通过外卖应用下订单之后会跳转到支付应用一样。

        1.2.方法

                1).driver.start_activity(appPackage,appActivity)

                2).appPackage:打开的程序的包名

                3).appActivity:要打开的程序的界面名

        1.3.代码

import unittest
from appium import webdriver
from selenium.webdriver.common.by import By

# 打开相册
capabilities = {}
capabilities['platformName'] = 'Android'
capabilities['automationName'] = 'uiautomator2'
capabilities['deviceName'] = 'Android'
capabilities['appPackage'] = 'com.android.gallery3d'
capabilities['appActivity'] = '.app.GalleryActivity'
capabilities['language'] = 'en'
capabilities['locale'] = 'US'

appium_server_url = 'http://localhost:4723'


class TestAppium(unittest.TestCase):

    def setUp(self) -> None:
        # 获取driver
        self.driver = webdriver.Remote(appium_server_url,capabilities)
        self.driver.implicitly_wait(30)

    def tearDown(self) -> None:
        if self.driver:
            # 退出程序
            self.driver.quit()

    def test_find_battery(self) -> None:
        # 点击相册app
        el = self.driver.find_element(By.XPATH, '//*[@text="Gallery"]')
        el.click()


if __name__ == '__main__':
    unittest.main()

二、获取包名和界面名

        2.1.应用场景

                当我们从一个应用跳转到另外一个应用的时候,想输出其包名、界面名或者想在报告中展现对应信息,我们就可以调用这个属性来进行获取

        2.2.方法

                1).获取包名--->driver.current_package

                2).获取界面名--->driver.current_activity

        2.3.代码

import unittest
from appium import webdriver
from selenium.webdriver.common.by import By

# 打开相册
capabilities = {}
capabilities['platformName'] = 'Android'
capabilities['automationName'] = 'uiautomator2'
capabilities['deviceName'] = 'Android'
capabilities['appPackage'] = 'com.android.gallery3d'
capabilities['appActivity'] = '.app.GalleryActivity'
capabilities['language'] = 'en'
capabilities['locale'] = 'US'

appium_server_url = 'http://localhost:4723'


class TestAppium(unittest.TestCase):

    def setUp(self) -> None:
        # 获取driver
        self.driver = webdriver.Remote(appium_server_url,capabilities)
        self.driver.implicitly_wait(30)

    def tearDown(self) -> None:
        if self.driver:
            # 退出程序
            self.driver.quit()

    def test_find_battery(self) -> None:
        # 输出当前程序的包名和界面名
        # el = self.driver.find_element(By.XPATH, '//*[@text="Gallery"]')
        print(self.driver.current_package)
        print(self.driver.current_activity)
        # el.click()


if __name__ == '__main__':
    unittest.main()

三、关闭app和驱动对象

        3.1.应用场景

                有的时候我们需要关闭某个应用程序后,再打开新的应用。那么如何关闭应用程序呢?

        3.2.方法

                1).关闭当前操作的app,不会关闭驱动对象----driver.terminate_app()

                2).关闭驱动对象,同时关闭所有关联的app---driver.quit()

        3.3.代码

import unittest
from time import sleep

from appium import webdriver
from selenium.webdriver.common.by import By

# 打开相册
capabilities = {}
capabilities['platformName'] = 'Android'
capabilities['automationName'] = 'uiautomator2'
capabilities['deviceName'] = 'emulator-5554'
capabilities['platformVersion'] = '9.0'
capabilities['appPackage'] = 'com.android.settings'
capabilities['appActivity'] = '.Settings'
capabilities['language'] = 'en'
capabilities['locale'] = 'US'
capabilities['autoGrantPermissions'] = True

appium_server_url = 'http://localhost:4723'


class TestAppium(unittest.TestCase):

    def setUp(self) -> None:
        # 获取driver
        self.driver = webdriver.Remote(appium_server_url,capabilities)
        # self.driver.implicitly_wait(30)

    def tearDown(self) -> None:
        if self.driver:
            # 关闭驱动
            sleep(2)
            self.driver.quit()

    def test_find_battery(self) -> None:
        # 点击app,并等待两秒钟关闭app
        el = self.driver.find_element(By.XPATH, '//*[@text="Battery"]')
        el.click()
        sleep(2)
        self.driver.terminate_app('com.android.settings')


if __name__ == '__main__':
    unittest.main()

四、安装和卸载app

        4.1.应用场景

                一些应用市场的软件可能会有一个按钮,如果某一个程序已经安装则卸载,如果没有安装则安装

        4.2.方法

                1).安装app:driver.install_app(app_path)

                2).卸载app:driver.remove_app(app_id)

                3).判断app是否已经安装:driver.is_app_installed(app_id)

        4.3.代码

import unittest
from time import sleep

from appium import webdriver
from selenium.webdriver.common.by import By

# 打开相册
capabilities = {}
capabilities['platformName'] = 'Android'
capabilities['automationName'] = 'uiautomator2'
capabilities['deviceName'] = 'emulator-5554'
capabilities['platformVersion'] = '9.0'
capabilities['appPackage'] = 'com.android.browser'
capabilities['appActivity'] = '.BrowserActivity'
capabilities['language'] = 'en'
capabilities['locale'] = 'US'
capabilities['autoGrantPermissions'] = True

appium_server_url = 'http://localhost:4723'


class TestAppium(unittest.TestCase):

    def setUp(self) -> None:
        # 获取driver
        self.driver = webdriver.Remote(appium_server_url,capabilities)
        # self.driver.implicitly_wait(30)

    def tearDown(self) -> None:
        if self.driver:
            # 关闭驱动
            self.driver.quit()

    def test_find_battery(self) -> None:
        # 判断浏览器是否已经安装
        if self.driver.is_app_installed("com.android.browser"):
            # 卸载app
            print("true")
            # self.driver.remove_app("com.android.browser")
        else:
            # 安装app
            # self.driver.install_app()
            print("false")



if __name__ == '__main__':
    unittest.main()

五、将应用置于后台

        5.1.应用场景

                银行类app会在进入后台一定时间后,如果再回到前台也页面会重新输入密码,如果需要自动化测试这种功能,可以使用这个api进行测试

        5.2.方法

                1).app放置在后台一定时间后再返回前台,模拟热启动

                2).driver.background_app(seconds)

        5.3.注意

                热启动:表示进入后台回到前台。关机再开这种切断电源的行为可以叫做“冷启动”

        5.4.代码

import unittest
from time import sleep

from appium import webdriver
from selenium.webdriver.common.by import By

# 打开相册
capabilities = {}
capabilities['platformName'] = 'Android'
capabilities['automationName'] = 'uiautomator2'
capabilities['deviceName'] = 'emulator-5554'
capabilities['platformVersion'] = '9.0'
capabilities['appPackage'] = 'com.android.settings'
capabilities['appActivity'] = '.Settings'
capabilities['language'] = 'en'
capabilities['locale'] = 'US'
capabilities['autoGrantPermissions'] = True

appium_server_url = 'http://localhost:4723'


class TestAppium(unittest.TestCase):

    def setUp(self) -> None:
        # 获取driver
        self.driver = webdriver.Remote(appium_server_url,capabilities)
        # self.driver.implicitly_wait(30)

    def tearDown(self) -> None:
        if self.driver:
            # 关闭驱动
            sleep(2)
            self.driver.quit()

    def test_find_battery(self) -> None:
        # 点击app,并进入后台五秒钟,然后再关闭app
        el = self.driver.find_element(By.XPATH, '//*[@text="Battery"]')
        el.click()
        sleep(2)
        self.driver.background_app(5)
        sleep(2)
        self.driver.terminate_app('com.android.settings')


if __name__ == '__main__':
    unittest.main()

六、今日学习思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开测开测

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值