創建測試文件夾
在Idea項目src文件夾下創建test文件(Idea如果語句錯誤或者遺漏都可以檢查出來,個人覺得好用一些),繼續在test文件夾下創建java文件,然后設置文件夾屬性為"Test Sources Root",以后生成的測試文件都要在java文件夾下;
如何連接夜魔/真機
1.啟動夜魔,更正常手機一樣設置,把它設置為開發者模式,終端敲入“adb connect 127.0.0.1:62001” 同時啟動appium 服務器;
2.真機調成開發者模式,然后啟動USB調試,終端敲入“adb devices” 同時啟動appium 服務器;
3.借助sdk里面的工具tools目錄下的uiautomatorviewer映射當前機器,啟動“uiautomatorviewer”就能定位到索要找的元素
元素定位方法
一般通過以下方法進行定位id/name/classname/xpath,可通過uiautomatorviewer定位,name相對來比定位的比較多;
id定位:driver.find_element_by_id(resource-Id)、 driver.find_element_by_id("com.sankuai.meituan:id/search_edit")
name定位:driver.find_element_by_name(text)、driver.find_element_by_name("輸入商家、分類或商圈")
classname定位:driver.find_element_by_class_name(class)、driver.find_element_by_class_name(“android.widget.TextView”)
xpath定位:driver.findElementsByXPath()、By.xpah(“//android.widget.TextView[contains(@Text,”abc”)]”)
注意雖然xpath是萬能的但是盡量還是用ByName、ByID
實例講解
在這里先說一下簡單的實例吧,我們在這里用junit,在測試類中創建一個class文件
public classDemoTest {
privateAppiumDriverdriver;
@Before
public voidsetUp()throwsException{
DesiredCapabilities cap =newDesiredCapabilities();
cap.setCapability("platformName","Android");
cap.setCapability("deviceName","127.0.0.1:62001");//需要連接的真機或者模擬機
cap.setCapability("platformVersion","4.4.2");//版本
cap.setCapability("unicodeKeyboard",true);
cap.setCapability("resetKeyboard",true);
cap.setCapability("appPackage","安裝包名字");//要測試的安裝包
cap.setCapability("appActivity","安裝包的activity");//要測試的安裝包activity
driver=newAndroidDriver(newURL("http://127.0.0.1:4723/wd/hub"),cap);//appium本地地址和斷開號
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
}
@After
public voidtearDown()throwsException{
driver.quit();
}
}
如何獲取測試app 的安裝包名字package、launch able-activity屬性的名字呢?
有兩種方式:第一種先進入build-tools目錄下,執行“aapt dump?badging app存放的目錄“;第二種就是啟動appium的時候查看啟動日志;
連接的機器的條件我們已經準備好了,現在我們主要寫測試用例了,創建一個方法在前面添加@Test,把它放在Before、After中間,以為junit每次執行test的時候都會執行Before和After,這樣我們可以寫多個用例每次都需要重新加載一下
public void test4() throws Exception{
Thread.sleep(2000);//等待時間
driver.findElementByName("定位元素的test").click();
driver.findElementById("定位元素的id").click();
driver.findElementByClassName("定位元素classname").sendKeys("輸入字符");
driver.findElementByXPath("定位元素xpath").click();
}
可以理解為把這個頁面截取出來找到它的元素,然后把操作分開點擊(click)、輸入(sendkeys)等,元素后面有很多的操作,這里簡單介紹一下。
這里注意的是,在執行時確保連接到真機或者模擬機、appium已經啟動,有的時候執行的時候種報錯那時因為定位的元素變了,獲取不到,需要重新配置下;