博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结
阅读量:5115 次
发布时间:2019-06-13

本文共 2647 字,大约阅读时间需要 8 分钟。

环境:

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

 

①获取手机屏幕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

②滑动方法:

参考:《 》

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

# 只供参考,但是不适用于pythonfinal 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();

③多个相同元素定位:

 

打开地址:

如图这里会定位出多个相同元素的信息,如果那个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】角标即可。

④隐藏弹出的输入法,因为怎么试都不行,后来采取的定位背景元素,点击背景,这样就可以间接关闭输入法。

⑤判断可不可以点击元素:

参考:《》

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").textprint(text)self.assertEqual(text,"xxx","显示不对!")

 

附录:

其他appium-IOS自动化API写法参考如下:

《 》

《》

《》

《》

《》

《》

 

转载于:https://www.cnblogs.com/Owen-ET/p/9967907.html

你可能感兴趣的文章
[C#]简单的理解委托和事件
查看>>
2015年主流的页面导航菜单设计
查看>>
如何开具和交付给客户电子发票
查看>>
heX:用HTML5和Node.JS开发桌面应用
查看>>
使用 vs 2008 宏制作自动注释工具
查看>>
js 动态生成button 并设置click事件
查看>>
esxi忘记密码重置方法
查看>>
【java】@Transactional注解与事务
查看>>
EasyPR源码剖析(4):车牌定位之Sobel算子定位
查看>>
javaweb项目搭建ehcache缓存系统
查看>>
HTML5:一个拖拽网页元素的例子
查看>>
BZOJ 2169
查看>>
js+css3实现旋转效果
查看>>
html5的web存储详解
查看>>
感觉自己应该重新读一次Javascript
查看>>
最小化安装k8s
查看>>
多线程经典模型-生产者消费
查看>>
【最短路】Walls
查看>>
Python策略模式实现源码分享
查看>>
千氪|比特币十周年大事记
查看>>