Appium移動端自動化測試--元素操作與觸摸動作【移動端自動化測試教程奉上】
之前陸續(xù)介紹了移動端測試的相關(guān)知識,今天介紹下元素定位之后的操作與觸摸動作,學(xué)習(xí)計劃因為各種原因,擱置了很久,接下來繼續(xù)之前的計劃,APP和API接口測試。
Appium往期推文:
常見自動化動作支持
click
sendKeys
swipe
touch action
元素操作
1.click()點擊操作
也可以用tab實現(xiàn)點擊操作
driver.find_element_by_id("com.wuba.zhuanzhuan:id/ae8").click()
2.clear()清空輸入框內(nèi)容
driver.find_element_by_id("com.wuba.zhuanzhuan:id/ij").clear()
3.send(xx)輸入框內(nèi)輸入內(nèi)容
driver.find_element_by_id("com.wuba.zhuanzhuan:id/ij").send_keys("test content")
4.text 獲得元素的text內(nèi)容
print(driver.find_element_by_xpath(" //android.widget.LinearLayout[1]//xxx").text)
TouchAction觸摸操作
Tap
在支持觸摸的設(shè)備上單擊/點擊
Double Tap
在觸摸屏上雙擊
Move To
手指在屏幕上移動/拖動
Long Tap
在觸摸屏上長按進(jìn)行操作
Scroll
觸摸屏上滾動
Multi Touch Perform
鏈?zhǔn)讲僮鳎ǘ鄠€操作連接起來)
1Java
2TouchActions?action?=?new?TouchActions(driver);
3action.singleTap(element);//點擊操作
4action.doubleTap(element);//雙擊操作
5action.down(10,?10);//按住
6action.moveTo(50,?50);//移動
7action.longPress(element);//長按
8action.scroll(element,?10,?100);//滾動
9
10//多個操作
11TouchActions?actionOne?=?new?TouchAction();
12actionOne.press(10,?10).moveTo(10,?100).release();
13TouchActions?actionTwo?=?new?TouchAction();
14actionTwo.press(20,?20).moveTo(20,?200).release();
15MultiTouchAction?action?=?new?MultiTouchAction();
16action.add(actionOne).add(actionTwo);
17
18action.perform();//調(diào)起操作/執(zhí)行
1Python
2from?appium.webdriver.common.touch_action?import?TouchAction
3#?...
4actions?=?TouchAction(driver)
5actions.tap(element)?#點擊操作
6actions.double_tap(element);#雙擊操作
7actions.tap_and_hold(element)#按住
8actions.move_to(element,?50,?50)#移動
9actions.long_press(element)#長按
10actions.scroll_from_element(element,?10,?100)
11actions.scroll(10,?100)#滾動
12actions.perform()
13
14#多個操作
15a1?=?TouchAction()
16a1.press(10,?20).move_to(10,?200).release()
17a2?=?TouchAction()
18a2.press(10,?10).move_to(10,?100).release()
19ma?=?MultiAction(self.driver)
20ma.add(a1,?a2)
21ma.perform()#調(diào)起操作
TouchAction是一個鏈?zhǔn)紸PI操作,可以將一連串的單個操作連接起來形成一個鏈?zhǔn)降牟僮鳌?br style="box-sizing: border-box;font-size: inherit;color: inherit;line-height: inherit;">TouchAction(driver).long_press().move_to().release().perform()
處理滑動API--swipe

swipe是對TouchAction的一個封裝,底層源代碼還是使用了TouchAction
swipe(self, start_x, start_y, end_x, end_y, duration=None):
int start x-開始滑動的x坐標(biāo);
int start y?-開始滑動的y坐標(biāo) ;
int end x?-結(jié)束點x坐標(biāo);
int end y?-結(jié)束點y坐標(biāo);
duration?滑動時間(默認(rèn)5毫秒)
屏幕左上角為起點,坐標(biāo)為(0,0),起點往右為Y軸,起點以下為X軸
其實就是需要輸入一個滑動起始點和結(jié)束點對應(yīng)的X Y坐標(biāo),進(jìn)行滑動操作,而在實際工作中一般輸入的是相對坐標(biāo),根據(jù)整個屏幕的比例計算得到的坐標(biāo),不建議直接輸入固定的(絕對)坐標(biāo)值,每款尺寸類型的手機(jī)不一樣。
如下的Java代碼,獲取到屏幕的高和寬,再根據(jù)高和寬來確定滑動的起始位置和結(jié)束位置。
1????int?width?=?driver.manage().window().getSize().width;??
2????int?height?=?driver.manage().window().getSize().height;??
3????driver.swipe(width?/?2,?height?*?3?/?4,?width?/?2,?height?/?4,?duri);??
參數(shù)介紹:
driver(就是把a(bǔ)ppiumdriver對象傳進(jìn)來)
during(這里是填寫毫秒數(shù),這里的 毫秒數(shù)越小 滑動的速度越快~ 一般設(shè)定在500~1000,如果你想快速滑動 那就可以設(shè)置的更加小)
num(是只滑動的次數(shù),如相冊多張圖片翻頁測試什么的滑動或者滑動到列表底部。就直接輸入次數(shù)就行了)
上滑 swipeToUp
1public?static?void?swipeToUp(AppiumDriver?driver,int?during,?int?num) ?{??
2????int?width?=?driver.manage().window().getSize().width;??
3????int?height?=?driver.manage().window().getSize().height;??
4????for?(int?i?=?0;?i?5????????driver.swipe(width?/?2,?height?*?3?/?4,?width?/?2,?height?/?4,?duri??
6????}??
7}??
swipeToDown下拉
1public?static?void?swipeToDown(AppiumDriver?driver,int?during,?int?num) ?{??
2????int?width?=?driver.manage().window().getSize().width;??
3????int?height?=?driver.manage().window().getSize().height;??
4????System.out.println(width);??
5????System.out.println(height);??
6????for?(int?i?=?0;?i?7????????driver.swipe(width?/?2,?height?/?4,?width?/?2,?height?*?3?/?4,?during);??
8????}??
9}??
swipeToLeft向左滑動
1public?static?void?swipeToLeft(AppiumDriver?driver,int?during,?int?num) ?{??
2????int?width?=?driver.manage().window().getSize().width;??
3????int?height?=?driver.manage().window().getSize().height;??
4????for?(int?i?=?0;?i?5????????driver.swipe(width?*?3?/?4,?height?/?2,?width?/?4,?height?/?2,?during);???
6????}??
7}?
swipeToRight向右滑動
1public?static?void?swipeToRight(AppiumDriver?driver,int?during,?int?num) ?{??
2????int?width?=?driver.manage().window().getSize().width;??
3????int?height?=?driver.manage().window().getSize().height;??
4????for?(int?i?=?0;?i?5????????driver.swipe(width?/?4,?height?/?2,?width?*?3?/?4,?height?/?2,?during);????
6????}??
7}??Appium往期推文:
送書活動:
留言+分享贈書
免費(fèi)贈送技術(shù)類圖書,無套路,純免費(fèi)!
北大出版社《Python自動化測試實戰(zhàn)》
(活動碼004)
點擊下方小程序查看圖書內(nèi)容詳情
文章合集
Selenium?|?Appium??|?Jenkins??|??Jmeter?
軟件測試方法匯總?|?Postman接口參數(shù)化?|?測試用例設(shè)計?|?安卓APP抓包
視頻教程

