【Mac + Appium + Python3.6學習(四)】之常用的IOS自動化測試API總結


環境:

  • Appium:1.9.1
  • Appium-desktop:1.7.1
  • Xcode:10.0
  • IOS:iPhone5S(10.3.3)
  • Mac:10.13.6

 

①獲取手機屏幕size:長、寬

Appium Appium 1.9 版本 BUG:使用 get_window_size () 方法報錯

解決辦法:

復制代碼
# 修改路徑
......\...python3.6.1-path\Lib\site-packages\selenium\webdriver\remote\remote_connection.py

# 300行
# 原代碼
Command.W3C_GET_WINDOW_SIZE:
                ('GET', '/session/$sessionId/window/size'),

# 替換為
Command.W3C_GET_WINDOW_SIZE:
               ('GET','/session/$sessionId/window/$windowHandle/size'),
復制代碼

解決size報錯之后:

復制代碼
# 獲取手機屏幕長和寬
self.size = self.d.get_window_size()

# 獲取寬度一半
self.half_Width = self.size['width']/2

# 獲取長度一半
self.half_Width = self.size['height']/2
復制代碼

②滑動方法:

參考:《Appium 急急急:Appium1.5.3 有沒有針對 iOS 屏幕滑動的新方法,swipe 坐標滑動已經不支持了,求 Python 語言新解決方法

復制代碼
    def do_swipe(self,x1,y1,x2,y2):
        '''
        # 滑動方法
        :return:
        '''
        self.d.execute_script("mobile: dragFromToForDuration",
                              {"fromX": x1, "fromY": y1, "toX": x2, "toY": y2, "duration": 0.5})
復制代碼

 ②-1:上、下、左、右,滾動方法:

driver.execute_script('mobile:scroll', {'direction': '參數'}) # 參數:down,up,right,left

②-2:另外,如果想模擬滑動軌跡,如手勢解鎖,可以這樣(先make一下:TouchAction

復制代碼
# 只供參考,但是不適用於python
final TouchAction gesture = new TouchAction(driver).press(startX, stratY)
     .moveTo(startX, stratY + height)
     .moveTo(startX, stratY + height + height)
     .moveTo(startX + width, stratY + height + height).release();
 gesture.perform();
復制代碼

③多個相同元素定位:

 

打開地址:http://localhost:8100/inspector

如圖這里會定位出多個相同元素的信息,如果那個appium-desktop定位不出元素,我們就采取這種方式獲取屬性定位。

既然找到元素屬性了,那如何寫代碼定位呢?如下:

復制代碼
# 點擊第一個相同元素
self.d.find_elements_by_name("home arrow news")[0].click()

# 點擊第二個相同元素
self.d.find_elements_by_name("home arrow news")[1].click()

# 點擊第三個相同元素
self.d.find_elements_by_name("home arrow news")[2].click()
復制代碼

只需要加上【index】角標即可。

④隱藏彈出的輸入法,因為怎么試都不行,后來采取的定位背景元素,點擊背景,這樣就可以間接關閉輸入法。

⑤判斷可不可以點擊元素:

參考:《Selenium2+python自動化36-判斷元素存在

復制代碼
    def isExist(self,i):
        '''
        # 判斷可不可以點擊元素
        :param i:
        :return:
        '''
        try:
            print("已選擇:[%s]" % i)
            self.d.find_element_by_name(i).click()
            return True
        except:
            return False
復制代碼

⑤-1判斷元素存不存在:

exist = self.d.find_element_by_name(i).is_enabled()
print(exist)
# True/False

⑥常用定位元素方法:

復制代碼
# class_name定位
self.d.find_element(By.CLASS_NAME,"XCUIElementTypeTextField")

# accessibility_id定位
self.d.find_element_by_accessibility_id("login_bg_top")

# name定位
self.d.find_element_by_name("home btn newtask")

# xpath定位
self.d.find_element_by_xpath('//XCUIElementTypeStaticText[@name="xxx"]')

# 還有其他的等等定位詳情參考附錄的文章
復制代碼

⑦點擊元素

self.d.find_element_by_name("home btn newtask").click()

⑧輸入值

self.d.find_element_by_accessibility_id("請輸入內容").send_keys("xxx")

⑨斷言

# 獲取元素的值進行斷言
text = self.d.find_element_by_accessibility_id("xxx").text
print(text)
self.assertEqual(text,"xxx","顯示不對!")

 

附錄:

其他appium-IOS自動化API寫法參考如下:

Appium Appium Python API 中文版 By-HZJ

Python + Appium+ IOS自動化測試

Appium+Python3+iOS定位元素

appium---appium 常見API

Github:appium提問題地址

Appium之主要的元素定位疑點難點

 轉自:https://www.cnblogs.com/Owen-ET/p/9967907.html


免責聲明!

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



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