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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM