1010Appium app自动化测试经验分享之 元素定位elements

今天SZ有雨,整个上午看着外面都是云很多,很大,所以我又变成‘死机’状态。最近是真的服了,好像觉比以前多很多,一直睡不醒。下午可算是清醒点。不过跑app脚本也真的奇怪了,同一份脚本换2个手机就死活执行不了,我真的要疯。

个人博客:https://blog.csdn.net/zyooooxie

一)元素定位 find_elements()

在写用例的时候,定位最常用的是driver.find_element_by_id()、driver.find_element_by_xpath()、self.driver.find_element_by_id()、self.driver.find_elements_by_css_selector()、self.driver.find_element_by_class_name();

但有时候 遇到相同id或者相同classname的情况,咋办呢?

元素定位本就是想用唯一属性来定位的,遇到这样的情况我一般是 先看有没有其他唯一属性(例如 text属性不同,使用driver.find_element_by_android_uiautomator(‘text(“xxxx”)’)就可以搞定)

接触一段时间的find_element(),联想到会不会有find_elements()。

没错,推荐的是driver.find_elements()

elements方法是复数,定位到的是一组元素list,返回的是列表;其实质可以理解为 先把相同属性的元素找出来,取对应的第几个就可以了。

这儿是封装的一个方法:传入参数包括–定位的方式、元素定位的属性值、所在位置


def new_find_elements(self, by, locator, num):
    if by in [By.CLASS_NAME, By.ID, By.XPATH]:
        WebDriverWait(self.driver, 10, 0.3).until(EC.visibility_of_element_located((by, locator)))
        return self.driver.find_elements(by, locator)[num]
    else:
        print('定位方式不推荐')
        raise NameError("cuo")

解释下:所在位置num,因为这个是list,所以要从0开始
有一个很容易混的是 app某些元素的属性是同样的class xpath定位标签是【1】【2】

举例:

fu_caini_xpath = '//*[@resource-id="like_more"]/android.widget.RelativeLayout/android.widget.TextView[1]'
fu_gengduo_xpath = '//*[@resource-id="like_more"]/android.widget.RelativeLayout/android.widget.TextView[2]'

实际class name 和id 很多相同情况,是可以用find_elements();

但是为什么定位方式加上xpath,就用上面的 举例,可修改为:

fu_zi_xpath = ‘//*[@resource-id=“like_more”]/android.widget.RelativeLayout/android.widget.TextView’
caini_num = 0 和 gengduo_num = 1

下面是一个用例

    def test_03_d482d(self):
        self.wodehuodong()
        self.xin_find_element(By.ID, self.wode_jinruqunliao_id).click()
        self.xin_find_elements(By.ID, self.wode_jinruqunliao_shezhi_id, 1).click()
        self.xin_find_element(By.ID, self.wode_jinruqunliao_shezhi_xuanze_id).click()

交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值