標籤:橫屏 ext win 定位 desc 卸載 代碼 log 2.3
一.元素定位
需要注意的是每一種定位方式在介面上都可能存在多個屬性值相同的元素
- findElementById(String id) 通過元素的resource-id的值進行尋找元素
AndroidElement ele=driver.findElementById(“com.zhihu.android:id/login_and_register”);
- findElementByName(String using 通過元素的text屬性值或者content-desc屬性值進行尋找元素
AndroidElement ele=driver.findElementByName(“登入或註冊”);
- findElementByClassName(String using) 通過元素的class屬性值進行尋找元素
AndroidElement ele=driver.findElementByClassName(“android.widget.Button”);
- findElementByXpath(String using) 通過xpath運算式去定位元素
AndroidElement ele=driver.findElementByXpath(“//android.widget.Button[@text=’登入或註冊’]”);
- findElementByAndroidUIAutomator(String using) 通過uiautomator定位方法尋找元素
AndroidElement ele=findElementByAndroidUIAtomator("new UiSelector().text(\"登入或註冊\")")
- findElement(By by) 以by對象作為參數尋找元素
findElement(By.id(String id))
findELement(By.name(String using))
findElement(By.classname(String using))
findElement(By.xpath(String using))
這個方法的傳回值和1-4的一樣的,傳參也一樣,如:
AndroidElement ele=driver.findElement(By.id(“com.zhihu.android:id/login_and_register”));
- 定位多個元素時只要將findElement改成findElements就行,如下
List<AndroidElement> eleList=driver.findElementsById(“xxxxx”);
或者
List<AndroidElement> eleList=driver.findElements(By.id(“xxxxx”));
當擷取到多個相同元素為一個集合時,要操作其中一個,可以使用索引進行指定操作,比如要操作點擊第2個(索引從0開始,所以點擊第2個元素的索引是1)
eleList.get(1).click();
當需要遍曆這個集合元素時,使用如下
for(AndroidElement ae:eleList){
ae.click();
//點擊後如果不在當前介面,這裡需要一行“返回”操作的代碼
}
二.元素常用操作
2.1 元素點擊
element.click()
2.2 輸入內容
element.sendKeys(“xxxxx”)
2.3 清空輸入框
element.clear()
另外一種清空方法(逐個刪除)
element.click();//先點擊一下元素確定游標焦點
driver.pressKeyCode(123);//將游標置於當前的最後
for(int i=0;i<element.getText().length();i++){
driver.pressKeyCode(67);//刪除
}
2.3 擷取元素某個屬性值(不能擷取password,package,index,bounds這三個屬性,”content-desc”使用contentDescription)
element.getAttribute("text");
2.4 擷取該元素的中心點座標
int x=element.getCenter().getX();//元素中心點的x座標值
int y=element.getCenter().getY();//元素中心點的y座標值
2.5 擷取該元素的起始點座標
int x= logout.getLocation().getX();//元素的起始x座標值
int y=logout.getLocation().getX();//元素的起始y座標值
2.6 擷取該元素的寬高
int width=element.getSize().width;//元素的寬
int height=element.getSize().height;//元素的高
2.7 元素滑動
element.swipe(SwipeElementDirection.UP, 20,20,500);//向上滑動
element.swipe(SwipeElementDirection.DOWN, 20,20,500);//向下滑動
element.swipe(SwipeElementDirection.LEFT, 20,20,500);//向左滑動
element.swipe(SwipeElementDirection.RIGHT, 20,20,500);//向右滑動
2.8 元素長按
TouchAction ta=new TouchAction(driver);
ta.longPress(element).release().perform();
2.9 擷取元素的文本值
String text=element.getText();
2.10 替換元素的文本值(可以作為輸入的另一種方式)
element.replaceValue("txt");
2.11 tap的幾種用法
element.tap(1,50)//單擊
三.driver常用方法
3.1 啟動其他app,用例之間的銜接(每個用例都是單獨從首頁開始執行,因為不能確認上1個用例執行完後到底停留在哪個頁面)
driver.startActivity(“appPackage”,”appActivity”);
driver.startActivity(“appPackage”,”appActivity”,”appWaitActivity”);
3.2 擷取當前activity
String curActivity=driver.currentActivity();
3.3 擷取當前網路狀態
driver.getNetworkConnection();
3.4 擷取當前context
driver.getContext();
3.5 擷取當前介面所有資源
driver.getPageSource();
3.6 擷取當前appium settings設定
driver.getSettings();
3.7 擷取當前所有context
driver.getContextHandles();
3.8 擷取當前sessionid
driver.getSessionId();
3.9 擷取當前裝置的方向(橫屏還是豎屏)
driver.getOrientation();
3.10 設定當前ignoreUnimportantViews值
driver.ignoreUnimportantViews(true);//在true和false可以隨時切換
3.11 安裝app
driver.installApp("C:\\Users\\lixionggang\\Desktop\\xinchangtai.apk");
3.12 重設app,會重設app的資料
driver.resetApp();
3.13 卸載app
driver.removeApp("apppackage");
3.14 開啟通知欄
driver.openNotifications();
3.15 tap點擊
driver.tap(int fingers,WebElement element,int duration)//方法定義
第一個參數是指點擊次數,第二個是點擊對象,第三個是點擊間隔時間
driver.tap(1, element, 50);//點擊元素element
driver.tap(int fingers,int x,int y,int duration)//方法定義
第一個和最後一個參數同上,中間兩個是要點擊的點的座標
driver.tap(1, 540, 540, 50);//點擊座標(540,540)
3.16 滑動
driver.swipe(int startx,int starty,int xend,int yend,int duration )
前兩個參數是滑動起始點的座標,中間兩個參數是滑動結束點的座標,最後一個是期間
driver.swipe(300,300,300,1000,500);
3.17 設定網路連接
數字0代碼全斷開,1代表開啟飛航模式,2代表開啟wifi,4代表開啟資料流量
NetworkConnectionSetting network=new NetworkConnectionSetting(2);
driver.setNetworkConnection(network);
3.18 設定隱式等待(全域等待)
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
3.18 擷取app應用佔據螢幕的大小
int width=driver.manage().window().getSize().getWidth();
int height=driver.manage().window().getSize().getHeight();
appium常用api