Appium安裝與調試

今天用了將近一整天的時間研究Appium,還算是有一點收穫,現在將這個過程記錄一下。
環境:win10;Python27

一:環境準備
1. 安裝Node.js;直接從官網下載安裝適配自己系統的版本,一路默認安裝即可;注意:默認安裝時會設定Path路徑;
2. 安裝JDK;同樣默認安裝即可,安裝完之後設置JAVA_HOME變量爲JDK目錄,如:C:\Program Files\Java\jdk1.8.0_131,後將%JAVA_HOME%\jre\bin;%JAVA_HOME%\bin;添加到Path中;(如何添加Java環境變量);
3. 安裝Android sdk;詳情查看第三步、下載並安裝AndroidSDK 注意:將其中的ANDROID_SDK_HOME改成ANDROID_HOME;
4. 安裝Appium;選擇以*.exe結尾的文件,默認安裝即可;最後在CMD 窗口運行Appium-doctor,如下圖示則成功的安裝了依賴環境;
這裏寫圖片描述


二:客戶端安裝

說是說客戶端,其實就是一個Python API。直接用pip裝;

pip install Appium-Python-Client

到這裏,其實整個Appium的環境準備就算是全部準備好了,接下來就是跑一個小demo然後調試;

三 : Demo

  1. 首先雙擊打開Appium;Host設置爲127.0.0.1,Port號不變;
  2. 寫一個Python腳本如下:
import os
import pytest

from appium import webdriver

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)
APPIUM_LOCAL_HOST_URL = 'http://localhost:4723/wd/hub'
PLATFORM_VERSION = '6.0'


class TestWebViewAndroid():
    @pytest.fixture(scope="function")
    def driver(self, request):
        desired_caps = {
            'appPackage': 'com.example.android.contactmanager',
            'appActivity': '.ContactManager',
            'platformName': 'Android',
            'platformVersion': PLATFORM_VERSION,
            'deviceName': 'Android Emulator',
            'app': PATH('../../../../sample-code/apps/ContactManager/ContactManager.apk')
        }
        driver = webdriver.Remote(APPIUM_LOCAL_HOST_URL, desired_caps)

        def fin():
            driver.quit()

        request.addfinalizer(fin)
        return driver  # provide the fixture value

    def test_add_contacts(self, driver):
        el = driver.find_element_by_accessibility_id("Add Contact")
        el.click()

        textfields = driver.find_elements_by_class_name("android.widget.EditText")
        textfields[0].send_keys("Appium User")
        textfields[2].send_keys("[email protected]")

        assert 'Appium User' == textfields[0].text
        assert '[email protected]' == textfields[2].text

        driver.find_element_by_accessibility_id("Save").click()

        # for some reason "save" breaks things
        alert = driver.switch_to_alert()

        # no way to handle alerts in Android
        driver.find_element_by_android_uiautomator('new UiSelector().clickable(true)').click()

        driver.press_keycode(3)

上述代碼需做相應的修改,具體參照appium簡明教程(7)——Desired Capabilities詳解
元素定位可以藉助uiautomatorviewer查看;

四 : 直接運行腳本

連接好手機之後,直接運行Python腳本即可;

詳情請參考:Appium 官方Github https://github.com/appium/appium

注意:上述腳本我還沒有調試成功,主要是元素定位有問題,但是不會報錯,我會繼續想辦法解決這個問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章