Mac + Appium学习之常用的IOS自动化测试API总结

Posted owen-et

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac + Appium学习之常用的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-pathLibsite-packagesseleniumwebdriver
emote
emote_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总结的主要内容,如果未能解决你的问题,请参考以下文章

Mac + Appium + Java1.8学习之Android模拟器自动化测试脚本开发以及简易例子

Mac + Appium + Java1.8学习之Android自动化环境安装配置以及IDEA配置(附录扩展Selenium+Java自动化)

Mac下appium ios自动化测试

Appium学习之Appium安装以及其他工具安装配置

移动端自动化测试-Mac-IOS-Appium环境搭建

Python+Appium学习之启动手机浏览器