python3+Appium自動化13-H5元素定位實踐案例


測試場景

啟動釘釘app進入工作H5頁面,點擊考勤簽到

查看webview上元素

1.電腦上打開chrome瀏覽器輸入:chrome://inspect/#devices

2.Discover USB devices這個要勾選的,可以檢查到手機設備

3.Discover network targets 這個勾選,檢查到網絡

4.下圖箭頭指向的,是手機的設備名稱

5.Webview in com.alibaba.android.rimet(39.0.00)這個是手機上瀏覽器的內核版本號39

(一般電腦上的chrome版本號最好要大於等於這個版本號)

1.上圖紅色框框的兩個地址就是加載到的webview的網頁地址了,點地址下的inspect按鈕,進入調試界面

(當然沒有梯子爬的同學,打開是一片空白的,你懂得)

2.不會爬梯子的也沒關系,把對應的url地址復制出來,重新打開一個瀏覽器標簽,輸入地址后,按F12也可以進調試界面。

3.接下來的元素定位就跟selenium的定位是一回事了。

代碼實踐:

 1 from appium import webdriver  2 from selenium.webdriver.support.ui import WebDriverWait  3 from selenium.common.exceptions import NoSuchElementException  4 import time  5 desired_caps = {  6                 #android的apk
 7                 'platformName': 'Android',  8                 #手機設備名稱
 9                 'deviceName': '127.0.0.1:21503', 10                 #android系統的版本號
11                 'platformVersion': '5.1.1', 12                 # 'deviceName': 'ceshi',
13                 # 'platformVersion': '7.0',
14                 # 'udid':'83f04b4b5338424e',
15 
16 
17                 # 'app':r'C:\Users\bzART\Desktop\app-artmall-release.apk',
18                 # apk包名
19                 'appPackage': 'com.alibaba.android.rimet', 20                 # apk的launcherActivity
21                 'appActivity': 'biz.home.activity.HomeActivity', 22                 #默認neReset為false,不要在會話前重置應用狀態,每次啟動都跟第一次啟動一樣,變為true則不一樣
23                 'noReset':'True', 24                 #下面兩行代碼是為了屏蔽軟件盤以至於可以輸入中文
25                 'unicodeKeyboard':True,#使用unicode編碼方式發送字符串
26                 'resetKeyboard':True#將鍵盤隱藏起來
27  } 28 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) 29 WebDriverWait(driver,8).until(lambda x:x.find_element_by_id('com.alibaba.android.rimet:id/home_bottom_tab_button_work')) 30 driver.find_element_by_id('com.alibaba.android.rimet:id/home_bottom_tab_button_work').click() 31 
32 WebDriverWait(driver,8).until(lambda x:x.find_element_by_class_name('android.webkit.WebView')) 33 #獲取所有的環境
34 contexts=driver.contexts 35 print(contexts) 36 time.sleep(10) 37 #切換到webview
38 driver.switch_to.context('WEBVIEW_com.alibaba.android.rimet') 39 #獲取當前的環境,看是否切換成功
40 print(driver.current_context) 41 
42 time.sleep(20) 43 #點擊考勤簽到
44 driver.find_element_by_xpath('//*[@id="dingapp"]/div/div[4]/div[1]/div[2]/div/div[3]/div/div[2]/p').click() 45 
46 #切換回native
47 driver.switch_to.context("NATIVE_APP") 48 # driver.switch_to.context(contexts[0])

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM