zoukankan      html  css  js  c++  java
  • Appium Python 六:管理应用和Activity

    管理应用

    1. 将当前应用放到后台

    执行之后,应用会被放到后台特定时间。比如这里就是5秒,5秒过后,应用会重新回到前台。

    driver.background_app(5)

    官网示例:

    driver.background_app(1)
    sleep(2)
    el = driver.find_element_by_name('Animation')
    assertIsNotNone(el)

    2. 检查应用是否已经安装

    检查设备目前是否安装了某个应用,这里检查的是知乎APP。

    这里需要的参数是该应用的包名,下面就是知乎的包名。该方法会返回True 或者 False 。

    driver.is_app_installed('com.zhihu.android')

    3. 安装应用

    在设备上安装某个应用。参数是该应用APK文件的路径。

    driver.install_app('zhihu_521.apk')

    其实执行的就是:adb install zhihu_521.apk

    官网示例:

    assertFalse(driver.is_app_installed('io.selendroid.testapp'))
    driver.install_app('/Users/isaac/code/python-client/test/apps/selendroid-test-app.apk')
    assertTrue(driver.is_app_installed('io.selendroid.testapp'))

    4. 卸载应用

    在设备上卸载某个应用。参数是该应用的包名。

    driver.remove_app('com.zhihu.android')

    其实执行的就是: adb uninstall com.zhihu.android

    官网示例:

    assertTrue(driver.is_app_installed('com.example.android.apis'))
    driver.remove_app('com.example.android.apis')
    assertFalse(driver.is_app_installed('com.example.android.apis'))

    5. 关闭应用

    关闭 desired_caps 定义的应用。

    driver.close_app()

    6. 启动应用

    启动 desired_caps 定义的应用。

    driver.launch_app()

    官网示例:

    el = driver.find_element_by_name('Animation')
    assertIsNotNone(el)
    driver.close_app();
    
    try:
        driver.find_element_by_name('Animation')
    except Exception as e:
        pass # should not exist
    
    driver.launch_app()
    el = driver.find_element_by_name('Animation')
    assertIsNotNone(el)

    7. 获取应用的字符串

    实际操作,发现返回的就是该次会话的 session id 。

    driver.app_strings

    打印出来,类似下面的结果:

    <bound method WebDriver.app_strings of <appium.webdriver.webdriver.WebDriver (session="xxxxxxxxxxxxxxxxxxxxxxxxxxx")>>

     

    8. 重置

    driver.reset()

    官网示例:

    el = driver.find_element_by_name('App')
    el.click()
    
    driver.reset()
    sleep(5)
    
    el = driver.find_element_by_name('App')
    assertIsNotNone(el)

    Activity

    1. 获取当前Activity

    driver.current_activity

    比如下面的程序:

    from appium import webdriver
    
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '4.2.2'
    desired_caps['deviceName'] = 'Android Emulator'
    desired_caps['appPackage'] = 'com.zhihu.android'
    desired_caps['appActivity'] = 'com.zhihu.android.app.ui.activity.MainActivity'
    
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    b=driver.current_activity
    print(b)

    运行结果如下:

    .app.ui.activity.MainActivity

    2. 启动Activity

    在当前应用中打开一个Activity ,或者启动一个新应用并打开一个Activity。

    这里第一个参数是要启动的Activity的包名,第二个参数是要启动的Activity名。

    driver.start_activity('com.example.android.apis', '.Foo')

    比如下面的程序:

    #coding=utf-8
    from appium import webdriver
    
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '4.2.2'
    desired_caps['deviceName'] = 'Android Emulator'
    desired_caps['appPackage'] = 'com.zhihu.android'
    desired_caps['appActivity'] = 'com.zhihu.android.app.ui.activity.MainActivity'
    
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    print(driver.current_activity)
    
    driver.start_activity('com.android.calculator2', '.Calculator')
    
    print(driver.current_activity)

    打印结果如下:

    .app.ui.activity.MainActivity
    .Calculator

    可以看到一开始当前Activity还是 知乎的 Activity,启动计算器的Activity之后,当前Activity就变成计算器的Activity。

  • 相关阅读:
    The specified framework 'Microsoft.NETCore.App', version '1.0.1' was not found 解决办法
    docker registry push错误“server gave HTTP response to HTTPS client”
    windows server 2016安装docker
    Opserver 初探三《服务器数据监控》
    Opserver 初探二《exceptions配置》
    Opserver 初探一《Opserver的搭建》
    centos 7 免密登录
    nginx 入门配置
    php适配器模式
    进程和线程
  • 原文地址:https://www.cnblogs.com/miniren/p/7381277.html
Copyright © 2011-2022 走看看