Appium是一個開源的自動化工具,可以用任意的編程語言去寫
使用Appium需要在本地設置一個相應服務器,相應自動化腳本的服務器,如果需要安裝請百度具體教程,或者使用node.js的命令在全局模式安裝,可視化可以用GUI安裝,會生成桌面圖標
啓動時要設置host和port,如果server是安裝在本機的,那麼host爲127.0.0.1,默認端口號爲4723點擊start後appium的服務就開啓了
客戶端建議使用maven進行編譯在pom文件進行依賴(百度一下appium maven和testng的依賴就有了,官方建議用testng),下載後就直接可以使用appium中各種各樣的api了),下載後就直接可以使用appium中各種各樣的api了
創建好測試類後就可以使用testng生成骨架,使用alt+insert選擇Generate->setup method、test Method、TearDown method這三個生成基本的骨架。
如果不知道腳本怎麼編寫,可以再官方查看給出的demo:(github.com/appium/sample-code/tree/master/sample-code/examples)根據不同的編程語言選擇junit–>然後在目錄中即可選擇demo進行查看
創建好骨架之後需要使用對應的driver,所以需要聲明一下,使用官方給出的demo,依次解釋一下:
//這是driver
private AppiumDriver<WebElement> driver;
@BeforeMethod
public void setUp() throws MalformedURLException {
獲取根目錄
File classpathRoot = new File(System.getProperty("user.dir"));
把需要安裝apk的路徑放進去
File app = new File(classpathRoot, "路徑/apk名字.apk");
這個是綁定設備熟的屬性,所以new了一個新對象出來
DesiredCapabilities capabilities = new DesiredCapabilities();
設備的名字,這個可以隨便改
capabilities.setCapability("deviceName","yibole");
這個是指被測應用的路徑
capabilities.setCapability("app", app.getAbsolutePath());
如果想要不是每次都是第一次啓動,可以設置noReset的值喂true
capabilities.setCapability("noReset",true);
這個是啓動類,啓動類如何獲得(需要反編譯或者使用SDK的aapt工具):在目錄下dir,然後輸入aapt dump badging 加上apk的名字就可以查看他的屬性,其中launchable-activity:name=“巴拉巴拉”就是他的啓動類com.巴拉巴拉開頭的
capabilities.setCapability("appActivity", "com.balabala");
因爲上面聲明瞭一個driver,下面這個是對對象進行實例化,AndroidDriver是服務端的地址,這裏的地址需要和appium一致,否則發了請求沒有回覆
driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
環境和屬性基本就是這個樣子,先喫飯(`ヮ´ )
========================================
和selenium差不多,就是先定位,然後給出操作的指令
長按
今天無意間看到一個長按的代碼
先把定位好的路徑返回給返回值類型爲WebElement的first。
WebElement first = driver.findElementByXPath("Xpath路徑");
然後new一個TouchAction方法,給個名字叫touch
TouchAction touch = new TouchAction(driver);
然後使用這個方法的longPress方法,並把路徑交給他,然後在用preform的release,就可以長按了
touch.longPress(first).perform().release();