1. 程式人生 > >【Mac + Appium學習(四)】之常用的IOS自動化測試API總結

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

git return click 支持 wip ces 其他 報錯 xxx

環境:

  • 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之主要的元素定位疑點難點》

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