51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2534|回复: 0
打印 上一主题 下一主题

[Appium] 【转帖】iOS+Python+Appium真机自动化测试实战

[复制链接]
  • TA的每日心情
    奋斗
    2015-8-28 12:55
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 2016-5-11 13:42:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1、连接真机跑通首先要确保真机可以跑通,具体的可以查看我上一篇文章mac appium ios python 之首次运行测试用例,打开appium后,进行配置。
    如果手机上已经安装了开发包,不需要勾选 AppPath;
    填写正确的BundleID和UDID,否则appium无法找到你的待测应用;
    配置填写完成后,点击Start按钮,appium与手机开始连接。点击inspector,如果可以正常开启,证明appium与手机的测试环境已经配置好。


    2、WebDriver定位Element开启inspector后,通过inspector定位Element。定位Element的方式有以下几种:
    • find_element_by_class_name(self, name)    //className属性是利用元素的css样式表所引用的伪类名称来进行元素查找的方法。对于任何HTML页面的元素来说,一般程序员或页面设计师会给元素直接赋予一个样式属性或者利用css文件里的伪类来定义元素样式,使元素在页面上显示时能够更加美观。
    • find_element_by_css_selector(self, css_selector)  //一个元素素指定了若干个class属性值的”复合样式“,指定了若干个css伪类名作为它的样式属性值时,需要用cssSelector来定位。
    • find_element_by_id(self, id_) //通过指定元素的id来进行定位。
    • find_element_by_link_text(self, link_text)  //通过超文本链接上的文字信息来定位元素。
    • find_element_by_name(self, name)  //通过指定元素的name来进行定位。
    • find_element_by_partial_link_text(self, link_text) //使用关键字与超文本链接上的文字信息进行匹配来定位元素,当定位到多个元素时,find_element 只会返回第一个元素,如果要返回全部需要用find_elements方法。
    • find_element_by_tag_name(self, name) // //通过指定元素的标签名来进行定位。
    • find_element_by_xpath(self, xpath) // 通过XML Path来定位,而在appium中,直接复制inspector中的XPath就可以了。绝对路径以/表示,相对路径则以//表示,当xpath的路径以/开头时,表示让Xpath解析引擎从文档的根节点开始解析。当xpath路径以//开头时,则表示让xpath引擎从文档的任意符合的元素节点开始进行解析。而当/出现在xpath路径中时,则表示寻找父节点的直接子节点,当//出现在xpath路径中时,表示寻找父节点下任意符合条件的子节点,不管嵌套了多少层级(这些下面都有例子,大家可以参照来试验)。

    例如:想要点击TextField2输入框,调起键盘,可以通过以下几个方式:self.driver.find_element_by_name("TextField2").click()self.driver.find_element_by_xpath(" //UIAApplication[1]/UIAWindow[1]/UIATextField[2]/UIATextField[1]").click()3、WebDriver事件触发针对Element操作:
    • click()  //点击元素     
    • clear() //清除元素内容,比如清除输入框内的文本
    • send_keys()  //在元素上模拟按键输入
    • submit()  //提交表单
    调用Element接口:
    • get_attribute("name") //得到元素某个属性的内容,比如得到name、value等
    • size()      //元素大小
    • text()      //元素文本

    4、Element条件判断
    判断元素属性:
    • is_displayed() //元素是否展示
    • is_enable()        //元素是否可用
    • is_selected()      //元素是否被选中

    5、异常处理
    1. try ... except ... 捕获异常2. try ... finally ...  无论有无异常都要执行finally中的代码3. self.assertEqual(value1, value2, failed info)   不相等时抛出异常
    4. self.assertTrue(, failedinfo):断言value1 == value2
    5. self.assertFalse(, failedinfo):断言value为真
    6. self.assertRaises(ValueError, self.widget.resize, -1, -1)  异常

    6、数据参数化在测试过程中,有时会出现重复输入数据的情况,比如登陆,搜索。这时通过读取文件的数据来实现参数化。


    创建loginData.txt文档,文档中每行写入一个 用户名和密码。然后通过sendkey()对输入框进行填充。
    [python] view plain copy


    • #-*- coding: utf8 -*-  
    • import sys  
    • reload(sys)  
    • sys.setdefaultencoding('utf-8')  
    •   
    • ReadFile = open(r"loginData.txt","r")  
    • lines = ReadFile.readlines()  
    • num=0  
    • for line in lines:  
    •     key = unicode(line)  
    •     key1 = str(key)  
    •     name = key1.split()[0]  
    •     password=key1.split()[1]  
    •     num=num+1  
    •     print num,name,password  
    •    


    文章出自:http://blog.csdn.net/youxiansanren/article/details/49335385



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏5
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 15:30 , Processed in 0.064837 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表