【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结
2024-09-03 01:24:00
环境:
- 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》
最新文章
- 利用session_set_save_handler()函数将session保存到MySQL数据库中
- HoverTree项目添加了查看留言列表功能
- beta阶段组间的140字互评
- SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的
- 【性能诊断】六、并发场景的性能分析(windbg案例,大量的内部异常造成CPU飙升)
- java异常处理机制Exception
- Perceptron Learning Algorithm (PLA)
- String Split 和 Join
- Node.js Express框架
- 软工UML学习札记
- PHP中文汉字验证码
- hdu 2642 二维树状数组 单点更新区间查询 模板水题
- Html中DIV成为超级链接,解决在360浏览器+IE9显示小手图标的兼容性!
- React版本更新及升级须知(持续更新)
- Qt5对XML文件操作
- 数据库和Django model 生成和反向生成
- vue+node+mongodb前后端分离博客系统
- ANT入门&;用ANT编译java项目
- vue 项目项目启动时由于EsLint代码校验报错
- JS 四舍五入有小数点
热门文章
- TreeView 类 事件
- Android模糊演示样例-RenderScript-附效果图与代码
- 适合移动手机使用的js环形菜单特效插件
- 【原创】Android自定义适配器的使用方法
- Win7如何关闭操作中心的图标
- GObject对象系统
- jQuery EasyUI API 中文文档 - 表单(form补充)
- vue - check-versions.js for packageConfig
- centos 6.5 安装 cx_Oracle 5.12 步骤 ,使用oracle instantclient12.1
- cocos2d-x:初探TestLua