Python+Appium自動化測試(12)-通過坐標定位元素


在使用appium做app自動化測試的過程中,可能會遇到元素的屬性值不是唯一的情況,導致不能通過find_element_bi_xx()方法定位元素,這個時候我們就可以通過坐標來定位元素。

1,通過絕對坐標定位(不推薦)

在手機(或模擬器)的開發者選項里打開指針位置,任意點的絕對坐標都能獲取到,如下A點的坐標為(542, 1362)

2,通過相對坐標定位(推薦)

更換不同分辨的測試機后,之前獲取的手機某個位置點的絕對坐標就會改變,這樣每次更換測試機都需要更改坐標,顯然是不方便代碼的維護,所以就需要獲取相對坐標。

2.1,獲取相對坐標的思路:

1,選擇任意一台測試手機(或模擬器)

2,獲取需要定位的點的絕對坐標(x1, y1)

3,獲取當前測試機屏幕的寬度(w1)、高度(h1)

4,獲取該點橫坐標與屏幕寬的比(x1/w1),縱坐標與屏幕高的比(y1/h1)

5,更換測試機后,獲取新的測試機屏幕的寬(w2),高(h2)

6,計算新測試機上該點橫坐標x2=w2 * (x1/w1),縱坐標y2 = h2 * (y1/h1)

2.2,點擊A點代碼如下:

點擊絕對坐標

# 點擊絕對坐標時的代碼,測試機屏幕寬1080,高2340
driver.tap(542, 1362)

點擊相對坐標

# 重新封裝點擊A點相對坐標的方法
def tapA(driver):
    # 比例系數
    x = 542/1080
    y = 1362/2340
    # 獲取新測試機屏幕寬、高
    w = driver.get_window_size()['width']
    h = driver.get_window_size()['height']
    # 屏幕寬高乘以A點的比例系數,即可得A點在新測試機上坐標
    driver.tap(x*w, y*h)

需要注意:

1,webdriver中提供坐標點擊方法tap(),而元素點擊方法則是click();

2,區別於TouchAction類中的tap()方法,不需要構造TouchAction對象,driver對象調用即可。


免責聲明!

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



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