Appium 问题:find_element_by_xxx 属性中是否有针对区域下的子节点进行遍历的方法呢?

梵心一点 · 2016年09月21日 · 最后由 梵心一点 回复于 2016年09月23日 · 1899 次阅读

问题描述:

针对浏览器中的信息流广告插入的位置做遍历验证,我需要通过 classname 来计算出一共多少条信息流插入一条广告,如下图:

  • 我要遍历左图 driver.find_elements_by_id('com.moxiu.launcher:id/br_news_list') 该 id 下,也就是红色大框下面的 FrameLayout 的 index 的值
  • element 有这样的属性么?
  • xpath 是不是可以针对局部的区域实现呢,我感觉在自动遍历的过程中,这种场景还是挺多的
共收到 4 条回复 时间 点赞

假设该页面只有一个ListView控件:

listViewItems = driver.find_elements_by_xpath("//android.widget.ListView/android.widget.FrameLayout")
ads = len(listViewItems)

@Anikikun 因为浏览器的页面时滑动的 ,不太好用 xpath,因为我要在滑动的过程中记录信息流的条数,直到找到该广告位置,现在的问题是 在截图的这一页 我只想取出广告以上的 信息流的条数,不想取出广告位置下面的广告条数,想到取出 framelayout 的 index 的值 ,根据 index 的值也就直到广告位置以上有几条信息流了,所以才有的这个发帖

#2 楼 @wufan0115 index 用来统计个数是不稳定的

@Anikikun 我昨天研究了下 index 这个在 webelement 属性下是取不出来的,就没用这种方案,我后来通过 xpath 将 ListView 控件下的所有控件都打印出来 通过 get_attribute('className') 可以把控件的名称都打印出来,然后通过计时器来统计 android.widget.FrameLayout 上面一共有几条 android.widget.LinearLayout ,总算是达到我想要的效果了😂 ··

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册