Appium移動(dòng)端自動(dòng)化測(cè)試--元素操作與觸摸動(dòng)作【移動(dòng)端自動(dòng)化測(cè)試教程奉上】
之前陸續(xù)介紹了移動(dòng)端測(cè)試的相關(guān)知識(shí),今天介紹下元素定位之后的操作與觸摸動(dòng)作,學(xué)習(xí)計(jì)劃因?yàn)楦鞣N原因,擱置了很久,接下來(lái)繼續(xù)之前的計(jì)劃,APP和API接口測(cè)試。
Appium往期推文:
常見(jiàn)自動(dòng)化動(dòng)作支持
click
sendKeys
swipe
touch action
元素操作
1.click()點(diǎn)擊操作
也可以用tab實(shí)現(xiàn)點(diǎ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è)備上單擊/點(diǎn)擊
Double Tap
在觸摸屏上雙擊
Move To
手指在屏幕上移動(dòng)/拖動(dòng)
Long Tap
在觸摸屏上長(zhǎng)按進(jìn)行操作
Scroll
觸摸屏上滾動(dòng)
Multi Touch Perform
鏈?zhǔn)讲僮鳎ǘ鄠€(gè)操作連接起來(lái))
1Java
2TouchActions?action?=?new?TouchActions(driver);
3action.singleTap(element);//點(diǎn)擊操作
4action.doubleTap(element);//雙擊操作
5action.down(10,?10);//按住
6action.moveTo(50,?50);//移動(dòng)
7action.longPress(element);//長(zhǎng)按
8action.scroll(element,?10,?100);//滾動(dòng)
9
10//多個(gè)操作
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)?#點(diǎn)擊操作
6actions.double_tap(element);#雙擊操作
7actions.tap_and_hold(element)#按住
8actions.move_to(element,?50,?50)#移動(dòng)
9actions.long_press(element)#長(zhǎng)按
10actions.scroll_from_element(element,?10,?100)
11actions.scroll(10,?100)#滾動(dòng)
12actions.perform()
13
14#多個(gè)操作
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是一個(gè)鏈?zhǔn)紸PI操作,可以將一連串的單個(gè)操作連接起來(lái)形成一個(gè)鏈?zhǔn)降牟僮鳌?br style="box-sizing: border-box;font-size: inherit;color: inherit;line-height: inherit;">TouchAction(driver).long_press().move_to().release().perform()
處理滑動(dòng)API--swipe

swipe是對(duì)TouchAction的一個(gè)封裝,底層源代碼還是使用了TouchAction
swipe(self, start_x, start_y, end_x, end_y, duration=None):
int start x-開(kāi)始滑動(dòng)的x坐標(biāo);
int start y?-開(kāi)始滑動(dòng)的y坐標(biāo) ;
int end x?-結(jié)束點(diǎn)x坐標(biāo);
int end y?-結(jié)束點(diǎn)y坐標(biāo);
duration?滑動(dòng)時(shí)間(默認(rèn)5毫秒)
屏幕左上角為起點(diǎn),坐標(biāo)為(0,0),起點(diǎn)往右為Y軸,起點(diǎn)以下為X軸
其實(shí)就是需要輸入一個(gè)滑動(dòng)起始點(diǎn)和結(jié)束點(diǎn)對(duì)應(yīng)的X Y坐標(biāo),進(jìn)行滑動(dòng)操作,而在實(shí)際工作中一般輸入的是相對(duì)坐標(biāo),根據(jù)整個(gè)屏幕的比例計(jì)算得到的坐標(biāo),不建議直接輸入固定的(絕對(duì))坐標(biāo)值,每款尺寸類(lèi)型的手機(jī)不一樣。
如下的Java代碼,獲取到屏幕的高和寬,再根據(jù)高和寬來(lái)確定滑動(dòng)的起始位置和結(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對(duì)象傳進(jìn)來(lái))
during(這里是填寫(xiě)毫秒數(shù),這里的 毫秒數(shù)越小 滑動(dòng)的速度越快~ 一般設(shè)定在500~1000,如果你想快速滑動(dòng) 那就可以設(shè)置的更加?。?br style="box-sizing: border-box;font-size: inherit;color: inherit;line-height: inherit;">num(是只滑動(dòng)的次數(shù),如相冊(cè)多張圖片翻頁(yè)測(cè)試什么的滑動(dòng)或者滑動(dòng)到列表底部。就直接輸入次數(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向左滑動(dòng)
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向右滑動(dòng)
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往期推文:
送書(shū)活動(dòng):
留言+分享贈(zèng)書(shū)
免費(fèi)贈(zèng)送技術(shù)類(lèi)圖書(shū),無(wú)套路,純免費(fèi)!
北大出版社《Python自動(dòng)化測(cè)試實(shí)戰(zhàn)》
(活動(dòng)碼004)
點(diǎn)擊下方小程序查看圖書(shū)內(nèi)容詳情
文章合集
Selenium?|?Appium??|?Jenkins??|??Jmeter?
軟件測(cè)試方法匯總?|?Postman接口參數(shù)化?|?測(cè)試用例設(shè)計(jì)?|?安卓APP抓包
視頻教程
Selenium?|?Appium?|?Jenkins?|?Jmeter
微信群:
軟件自動(dòng)化測(cè)試交流群已創(chuàng)建,公號(hào)回復(fù)入群即可獲取入群二維碼。

