一、元素定位方法
(1)id定位:find_element_by_id(“resource-id的属性值”)
利用元素的resource-id的属性值进行定位;在Android App中同一类别的元素的id的属性值有可能一致。
(2)name定位:find_element_by_name(“text属性值”) 利用元素的text属性值进行定位,由于text的值容易发送变化,在appium1.5后该方法被废弃
(3)class_name定位:find_element_by_class_name(“class的属性值”)
利用元素的class属性值进行定位,只能定位到符合条件的第一个元素。 注意:在Android App中的class的作用类似于html中的标签名,重复率较高,一般不推荐使用
(4)xpath定位:利用元素的层级路径进行定位。
①绝对路径定位:以单斜线“/”开头,不建议使用
② 相对路径定位:以双斜线“//”开头 ----> //class的属性值
③元素属性定位:任意一个属性 //class属性值[@属性名=“属性值”],class可以用*代替,表示任意class
④属性与逻辑结合 //class[@属性名1=“属性值1” and @ 属性名2=“属性值2”]
⑤属性与层级结合 //父元素class[@属性名=“属性值”]/子元素class
(5)list定位:获取到所有符合条件的元素,结果是一个list列表,根据索引获取元素,索引从0开始
(6)相对定位:
当无法直接定位子元素,可以先定位父元素,然后根据父元素定位子元素。方法:
父元素 = driver.find_element_by_xxx()
子元素 = 父元素.find_element_by_xxx()
二、元素操作方法
(1)点击:click()
(2)输入:send_keys()
send_keys()传入中文时需要在capability中配置如下内容:
# 输入法守护
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
使用Appium做了输入操作之后,如果出现输入法无法唤起,可以在系统设置——语言和输入法——将当前输入法替换为系统输入法或者其他输入法。
(3)清空:clear()
三、元素等待
强制等待:sleep(sec)
显式等待
隐式等待:implicitly_wait(sec)