安卓自動(dòng)化測(cè)試總結(jié)(六)——點(diǎn)擊控件時(shí)赋荆,一些常見(jiàn)的問(wèn)題

? 使用Robotium時(shí)笋妥,很多時(shí)候通過(guò)唯一的ID或text,即可找到對(duì)應(yīng)控件窄潭,并進(jìn)行操作春宣。不過(guò),編寫(xiě)用例較多時(shí)嫉你,總會(huì)遇到過(guò)以下類似操作問(wèn)題:

? ? 1月帝、在界面中,有多個(gè)相同的ID怎么辦幽污?

? ? 2嚷辅、在界面中,有多個(gè)相同的text怎么辦距误?

? ? 3簸搞、使用uiautomator,只有唯一的ID或text准潭,但一直操作不成功怎么辦趁俊?

? ? 4、在界面中刑然,沒(méi)有ID或text怎么辦寺擂?

? ? 5、在界面中泼掠,webview控件怎么辦怔软?

? ? 6、使用ID或text武鲁,無(wú)論如何也無(wú)法操作某個(gè)按鈕怎么辦爽雄?

? 對(duì)于這類問(wèn)題,只要解決了點(diǎn)擊控件存在的問(wèn)題沐鼠,基本也能解決其他操作的同類問(wèn)題挚瘟。所以,下面以點(diǎn)擊操作為例饲梭,說(shuō)明各種情況的處理乘盖。

在界面中,有多個(gè)相同的ID怎么辦憔涉?

? 點(diǎn)擊操作為:solo.clickOnView(solo.getView(sview,第n個(gè)id))订框。即先通過(guò)getView()得到對(duì)應(yīng)第n個(gè)id的view,然后再使用clickOnView點(diǎn)擊控件兜叨。

public android.view.View?getView(Stringed,int?index)

? Returns a View matching the specified resource id andindex.

Parameters:

? id - the id of the View to return

? index - the index of the View. 0 if only one is available

Returns:

? ?a View matching the specified id and index

public void?clickOnView(android.view.View?view)

? Clicks the specified View.

Parameters:

? view - the View to click

在界面中穿扳,有多個(gè)相同的text怎么辦衩侥?

? Robotium提供了方法,可以指定操作第幾個(gè)匹配的值矛物。

public void?clickOnText(String?text,int?match)

? Clicks a View or WebElement displaying the specified text. Will automatically scroll when needed.

Parameters:

? ?text - the text to click. The parameter will be interpreted as a regular expression

? ?match - if multiple objects match the text, this determines which one to click

使用uiautomator茫死,只有唯一的ID或text,但操作不成功怎么辦履羞?

? 這是由于使用uiautomator能看到ID或text的view峦萎,只是可以獲取的所有view的子集;有些控件的ID或text雖然符合要求忆首,但通過(guò)uiautomator根本找不到爱榔。可以通過(guò)getCurrentViews()獲取控件結(jié)果糙及,然后自己分析是否存在包含相同的ID或text的其他控件详幽。

public?ArrayList?getCurrentViews()

? Returns an ArrayList of the Views currently displayed inthe focused Activity or Dialog.

Returns:

? an ArrayList of the View objects currently displayed in the focused window

在界面中,沒(méi)有ID或text怎么辦丁鹉?

? 可以通過(guò)找到控件的父節(jié)點(diǎn)或祖父節(jié)點(diǎn)的ID的方式妒潭,來(lái)獲取對(duì)應(yīng)的控件的ID或進(jìn)行某些點(diǎn)擊操作。如

? ? solo.clickOnView(((ViewGroup)solo.getView(sview)).getChildAt(第n個(gè)子節(jié)點(diǎn)));

? 就是先通過(guò)父節(jié)點(diǎn)的id揣钦,找到子節(jié)點(diǎn)的ID對(duì)應(yīng)的view雳灾,然后進(jìn)行點(diǎn)擊操作。

? 或者冯凹,實(shí)在實(shí)現(xiàn)困難的話谎亩,可以和開(kāi)發(fā)人員交流,在代碼中增加對(duì)應(yīng)控件的ID宇姚,既能幫助測(cè)試提高代碼質(zhì)量匈庭,也能提高App的可測(cè)試性。

在界面中浑劳,有webview控件怎么辦阱持?

使用一下webview函數(shù)進(jìn)行操作。下次分享將詳細(xì)講解webview的相關(guān)界面自動(dòng)化開(kāi)發(fā)魔熏。

clickOnWebElement(By?by)

Clicks? a WebElement matching the specified By object.

clickOnWebElement(By?by, int?match)

Clicks? a WebElement matching the specified By object.

clickOnWebElement(By?by, int?match,? boolean?scroll)

Clicks? a WebElement matching the specified By object.

clickOnWebElement(WebElement?webElement)

Clicks? the specified WebElement.

使用ID或text衷咽,無(wú)論如何也無(wú)法操作某個(gè)按鈕怎么辦?

? 如果操作ID或text實(shí)在無(wú)法解決蒜绽,可以通過(guò)先找到控件的坐標(biāo)范圍镶骗,然后點(diǎn)擊對(duì)應(yīng)控件的中心坐標(biāo)的方式解決。另外躲雅,有些封裝導(dǎo)致的無(wú)法獲得ID或text問(wèn)題鼎姊,有時(shí)可以通過(guò)反射,來(lái)達(dá)到目標(biāo)。

public void?clickOnScreen(float?x,float?y,int?numberOfClicks)

? Clicks the specified coordinates rapidly a specified number of times. Requires API level >= 14.

Parameters:

? x - the x coordinate

? y - the y coordinate

? number Of Clicks - the number of clicks to perform

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末相寇,一起剝皮案震驚了整個(gè)濱河市慰于,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌唤衫,老刑警劉巖东囚,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異战授,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)桨嫁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門植兰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人璃吧,你說(shuō)我怎么就攤上這事楣导。” “怎么了畜挨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵筒繁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我巴元,道長(zhǎng)毡咏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任逮刨,我火速辦了婚禮呕缭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘修己。我一直安慰自己恢总,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布睬愤。 她就那樣靜靜地躺著片仿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尤辱。 梳的紋絲不亂的頭發(fā)上砂豌,一...
    開(kāi)封第一講書(shū)人閱讀 52,785評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音啥刻,去河邊找鬼奸鸯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛可帽,可吹牛的內(nèi)容都是我干的娄涩。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蓄拣!你這毒婦竟也來(lái)了扬虚?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤球恤,失蹤者是張志新(化名)和其女友劉穎辜昵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體咽斧,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡堪置,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了张惹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舀锨。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宛逗,靈堂內(nèi)的尸體忽然破棺而出坎匿,到底是詐尸還是另有隱情,我是刑警寧澤雷激,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布替蔬,位于F島的核電站,受9級(jí)特大地震影響屎暇,放射性物質(zhì)發(fā)生泄漏承桥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一根悼、第九天 我趴在偏房一處隱蔽的房頂上張望快毛。 院中可真熱鬧,春花似錦番挺、人聲如沸唠帝。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)襟衰。三九已至,卻和暖如春粪摘,著一層夾襖步出監(jiān)牢的瞬間瀑晒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工徘意, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苔悦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓椎咧,卻偏偏與公主長(zhǎng)得像玖详,于是被迫代替她去往敵國(guó)和親把介。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容