app自动化----appium元素定位及元素操作

定位方法

1.通过ID定位

find_element_by_id()

2.通过部分超链接文字定位

find_element_by_partical_link_text()

3.通过元素的class属性定位

find_element_by_class_name("class的值")

4.通过xpath属性定位

1)通过xpath定位

find_element_by_xpath()

Android的Xpath定位与PC的XPATH定位大同小异,可以通过相对路径的定位方式定位,区别在于,这里相对路径定位的//后只可以接Android的class属性或*。

2)通过元素定位

  1. 如果元素text是唯一的,可以通过text文本定位
    //*[@text=’text文本属性’]

  2. 如果元素id是唯一的,也可以id属性定位
    //*[@resource-id=’id属性’]

  3. 联合定位 and
    联合@resource-id属性和@text文本属性来下定位
    driver.find_element_by_xpth(“//*[@resource-id=‘com.taobao.taobao:id/tv_scan_text’][@text=‘扫一
    扫’]”).click()

  4. class属性唯一的话,同样可以通过class属性定位,有两种方法
    第一种: //class属性
    定位搜索框 //class属性
    driver.find_element_by_xpath(“//android.widget.EditText”).click()
    第二种://
    [@class=’class属性’]
    定位搜索框 //[@class=‘class属性’]
    driver.find_element_by_xpath(“//*[@class=‘android.widget.EditText’]”).click()

  5. contains模定位糊
    contains是模糊匹配的定位方法,对于一个元素的id或者text不是固定的,但有一部分是固定的,这种就可以模糊匹配。
    //[contains(@content-desc, ‘帮助’)] contains也能模糊匹配id和class属性
    //[contains(@resource-id, ‘id属性’)] //[contains(@clsss, ‘class属性’)]

  6. 组合定位
    如果一个元素有2个属性,通过xpath也可以同时匹配2个属性,text, resource-id,class,index,content-desc这些属性都能任意组合定位
    id和class属性
    定位搜索框
    id_class = ‘//android.widget.EditText[@resource-id=“com.taobao.taobao:id/home_searchedit”]’ driver.find_element_by_xpath(id_class).click() time.sleep(3) driver.back()
    text和index属性
    定位登录/注册
    desc_class = ‘//[@text=“注册/登录” and @index=“1”]’ driver.find_element_by_xpath(desc_class).click() time.sleep(3)
    class和text属性
    定位输入手机号
    class_text = ‘//android.widget.EditText[@text=“请输入手机号码”]’ driver.find_element_by_xpath(class_text).send_keys(“512200893”) time.sleep(3)
    class和desc属性
    定位帮助
    id_desc = '//
    [contains(@resource-id, “aliuser_menu_item_help”) and @content-desc=“帮助”]’ driver.find_element_by_xpath(id_desc).click()

  7. 层级定位
    通过父元素定位子元素
    如果一个元素,它除了class属性(class属性肯定会有),其它属性啥都没有,这种情况用上面方法就不适用了,这个时候可以找他父元素,通过父亲定位儿子
    #通过父亲定位儿子 搜索输入框 fa_sun = ‘//[@resoure-id=“com.taobao.taobao:id/home_searchbar”]/android.widget.EditText’ t = driver.find_element_by_xpath(fa_sun).text print(t)
    如果一个父元素下,有多个相同class的儿子时候,可以通过xpath的索引去取对应第几个,xpath是从1开始数的
    父元素下第2个儿子 微淘 fu_sun2 = '//
    [@resource- id=“com.taobao.taobao:id/ll_navigation_tab_layout”]/android.widget.FrameLayout[2]’ driver.find_element_by_xpath(fu_sun2).click()
    通过子元素定位父元素
    方法一:
    … sun_fa1 = '//[@resource-id=“com.taobao.taobao:id/tv_scan_text”]/…’ c = driver.find_element_by_xpath(sun_fa1).tag_name print©
    方法二
    parent::
    sun_fa2 = ‘//[@resource-id=“com.taobao.taobao:id/tv_scan_text”]/parent::’ d = driver.find_element_by_xpath(sun_fa1).tag_name print(d)
    方法三
    parent::android.widget.LinearLayout sun_fa3 = ‘//[@resource- id=“com.taobao.taobao:id/tv_scan_text”]/parent::android.widget.LinearLayout’ e = driver.find_element_by_xpath(sun_fa1).tag_name print(e)
    进行兄弟元素定位
    通过子元素,先找到父元素,再找父元素下的子元素,同样可以进行兄弟元素定位
    兄弟元素 xiongdi = '//
    [@resource-id=“com.taobao.taobao:id/bar_search”]/…/android.widget.RelativeLayout’ x = driver.find_element_by_xpath(xiongdi).tag_name print(x)

元素操作

1.点击

click : 单击对象,强调对象的独立性

driver.find_element_by_xpth(“//*[@resource-id=‘com.taobao.taobao:id/tv_scan_text’][@text=‘扫一
扫’]”).click()

2.输入

send_keys : 在对象上模拟按键输入,注意如果是函数需要增加转义符

(非作者允许,严禁转载)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值