【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之主要的元素定位疑点难点

 

posted @   Owen_ET  阅读(1070)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 模様 (TV size ver.) Ivy to Fraudulent Game
  3. 3 河口恭吾
  4. 4 愛してる 高鈴
  5. 5 一生所爱 卢冠廷,莫文蔚
  6. 6 世间美好与你环环相扣 柏松
  7. 7 理想三旬 陈鸿宇
  8. 8 不浪漫罪名 王杰
  9. 9 樱花树下 张敬轩
  10. 10 因为你在 达闻西乐队,福禄寿FloruitShow
  11. 11 悬溺 葛东琪
理想三旬 - 陈鸿宇
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 唐映枫

作曲 : 陈鸿宇

编曲 : 陈鸿宇/马雨阳

混音:马雨阳

雨后有车驶来

驶过暮色苍白

旧铁皮往南开 恋人已不在

收听浓烟下的 诗歌电台

不动情的咳嗽 至少看起来

归途也还可爱

琴弦少了姿态

再不见那夜里 听歌的小孩

时光匆匆独白

将颠沛磨成卡带

已枯卷的情怀 踏碎成年代

就老去吧 孤独别醒来

就老去吧 孤独别醒来

你渴望的离开

你渴望的离开

只是无处停摆

就歌唱吧 眼睛眯起来

而热泪的崩坏

只是没抵达的存在

青春又醉倒在

青春又醉倒在

籍籍无名的怀

靠嬉笑来虚度 聚散得慷慨

辗转却去不到 对的站台

如果漂泊是成长 必经的路牌

你迷醒岁月中

那贫瘠的未来

像遗憾季节里 未结果的爱

弄脏了每一页诗

吻最疼痛的告白

而风声吹到这 已不需要释怀

就老去吧 孤独别醒来

你渴望的离开

你渴望的离开

只是无处停摆

就歌唱吧 眼睛眯起来

而热泪的崩坏

只是没抵达的存在

就甜蜜地忍耐

就甜蜜地忍耐

繁星润湿窗台

光影跳动着像在 困倦里说爱

再无谓的感慨

以为明白

梦倒塌的地方 今已爬满青苔

点击右上角即可分享
微信分享提示