Appium自動(dòng)化測試 - 使用Chrome調(diào)試模式獲取App混合應(yīng)用的H5界面的元素定位

混合應(yīng)用是原生APP+webview組成的,可以簡單的理解為一個(gè)原生app的外殼旅急,內(nèi)部全是html頁面杠步。在處理這樣的app的定位的時(shí)候 需要先定位原生APP上的按鈕或者鏈接鸟顺,然后點(diǎn)擊按鈕或者鏈接,然后經(jīng)過appium提供的方法亥贸,進(jìn)入webview頁面躬窜,通過定位工具和方法進(jìn)行元素定位(同web自動(dòng)化元素定位)。

移動(dòng)端
1.將手機(jī)與PC通過USB連接炕置,開啟USB調(diào)試模式荣挨;

  1. 使用360手機(jī)助手或在dos窗口輸入adb devices查看手機(jī)驅(qū)動(dòng)連接是否成功;

PC端
1.搭建Appium環(huán)境朴摊,并下載SDK

  1. 在Chrome的應(yīng)用商店下載 ADB Plugin插件并安裝垦沉,點(diǎn)擊進(jìn)入下載 ADB Plugin插件,進(jìn)入調(diào)試模式仍劈;
  2. 此時(shí)頁面顯示了手機(jī)型號(hào)厕倍、驅(qū)動(dòng)名稱、APP要調(diào)試的WebView名稱贩疙;
  3. 點(diǎn)擊inspect讹弯,若成功加載與APP端相同界面的調(diào)試頁面,則配置成功这溅;


    image.png
image.png

因?yàn)锳ppium是通過 chromedriver-port 9515進(jìn)行通信组民,驅(qū)動(dòng)安卓手機(jī)上的WebView;
所以需要查看手機(jī)系統(tǒng)的Android System WebView顯示的Chrome版本悲靴,下載對應(yīng)的chromedriver并添加到Appium的chromedriver目錄臭胜,保證驅(qū)動(dòng)程序版本對應(yīng)。然后Appium后臺(tái)啟動(dòng)時(shí)會(huì)自動(dòng)重啟chromedriver癞尚;

例如遇到這類問題:
An unknown server-side error occurred while processing the command. (Original error: unknown error: Chrome version must be >= 43.0.2357.0

解決方案:
1耸三、查看手機(jī)的Android System WebView ,打開手機(jī)的設(shè)置>應(yīng)用程序管理>全部,注意浇揩,一定要在全部里面找仪壮。
2、查找到Android System WebView應(yīng)用胳徽,查看詳情积锅,顯示版本號(hào):55.0.2883.91爽彤,需要下載55~56版本的chromdriver

3、然后找到對應(yīng)的Chromedriver版本進(jìn)行下載缚陷。下載地址:chromedriver各版本下載适篙。
注意:最新版本是:2.37,可通過對應(yīng)版本的目錄下的notes.txt查看箫爷。

4匙瘪、在PC端找到Appium中chromdriver目錄下,替換chromdriver.exe.我的路徑是:D:\software\app tools\nodeV8.7.0Winx64\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win

Appium切換context蝶缀、切換webview

@Test
public void test1() {
    logger.info("開始了------------------------");
    Set<String> contexts = driver.getContextHandles();
    for(String context:contexts) {
        logger.info(context);
        //會(huì)打印出  NATIVE_APP(原生app handle)和WEBVIEW_com.example.testapp(webview的 handle)
    }

   //進(jìn)入webview中
   driver.context((String) contexts.toArray()[1]);
    WebElement vin = driver.findElement(By.xpath("http://input[@ng-model=\"vehicleInfo.vin\"]"));
    vin.clear();
    vin.sendKeys("LFV2B21K1D0904712");
}
或者是
public static void getContextHandle(AndroidDriver<WebElement> driver) {
Set<String> context = null ;
for(int i=1;i<=20;i++){
context = driver.getContextHandles();
for(String contextName : context) {
System.out.println(contextName);//打印當(dāng)前上下文
if(contextName!=null && contextName.contains("WEBVIEW_com.quantum.Tmsp7")||contextName.contains("WEBVIEW_com.tencent.mm:tools")){
switchTo_WEBVIEW(driver);
driver.getPageSource();
return;
}
if(i==20) assert false;
}
Log.goSleep(1);
}
}
public static void switchTo_WEBVIEW(AndroidDriver<WebElement> driver) {
String str = driver.currentActivity();//檢查當(dāng)前APP
for(int k=0;k<30;k++){
try {
if(str.equals(".MainActivity")){
driver.context("WEBVIEW_com.quantum.Tmsp7");
return;
}else if(str.equals(".plugin.webview.ui.tools.WebViewUI")){
driver.context("WEBVIEW_com.tencent.mm:tools");
return;
}
} catch (Exception e) {
if(k<10){
logger.info("switch...");
}if(k==30){
logger.fatal(driver, "switch fail!", e);
}
} finally{
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
}
}

為了預(yù)防端口被占用丹喻,請關(guān)閉91助手、殺毒軟件等翁都。
(1)啟動(dòng)appium
(2)運(yùn)行cmd 輸入 adb devices -l 查看UDID 如圖:
(3)再在cmd中輸入 appium -a 127.0.0.1 -p4723 -Uf4a4d8bb (-a表示ip碍论,-p表示端口,-U表示設(shè)備的udid )
執(zhí)行上述測試類即可柄慰。


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鳍悠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坐搔,更是在濱河造成了極大的恐慌藏研,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件概行,死亡現(xiàn)場離奇詭異蠢挡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)凳忙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門业踏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涧卵,你說我怎么就攤上這事勤家。” “怎么了柳恐?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵伐脖,是天一觀的道長。 經(jīng)常有香客問我乐设,道長讼庇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任伤提,我火速辦了婚禮巫俺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肿男。我一直安慰自己介汹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布舶沛。 她就那樣靜靜地躺著嘹承,像睡著了一般。 火紅的嫁衣襯著肌膚如雪如庭。 梳的紋絲不亂的頭發(fā)上叹卷,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機(jī)與錄音坪它,去河邊找鬼骤竹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛往毡,可吹牛的內(nèi)容都是我干的蒙揣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼开瞭,長吁一口氣:“原來是場噩夢啊……” “哼懒震!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嗤详,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤个扰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后葱色,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體递宅,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年苍狰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恐锣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舞痰,死狀恐怖土榴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情响牛,我是刑警寧澤玷禽,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站呀打,受9級特大地震影響矢赁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贬丛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一撩银、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧豺憔,春花似錦额获、人聲如沸够庙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耘眨。三九已至,卻和暖如春境肾,著一層夾襖步出監(jiān)牢的瞬間剔难,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工奥喻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留偶宫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓环鲤,卻偏偏與公主長得像纯趋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子楔绞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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