Appium 请教:关于 Appium 刷新元素缓存问题

小低调 · 2015年12月01日 · 最后由 思寒_seveniruby 回复于 2015年12月03日 · 4092 次阅读

遇到了一个非常奇怪的问题,我直接点 A 页的某个元素,appium 是可以被点击的,但是我点 B 页面,再进入 A 页面点那个元素就出错了,搞了半天才发现原来 B 页面的也有路径(UIAScrollView),指向的还是同一个地方的,但是里面的子元素发生变化了,导致 appium 找不到元素就出错了(试过直接用 xpath,name 都不行),估计里缓存没刷新导致的,有没有什么办法解决的

B:

A:

环境:IOS+Java+Eclipse+Mac10.10.4

共收到 17 条回复 时间 点赞

没搞懂你的问题。
appium 的缓存只会缓存你 find 过的对象,只要重新 find 一次就不会用缓存啊。

#1 楼 @chenhengjie123 这个和 uiautomator 有关。

#2 楼 @lihuazhang 那这个有解决的方法么

1、进入 A 页,打印布局System.out.println(driver.getPageSource());
2、做了一些操作进入 B 页
3、做了一些操作进入了 A 页,打印布局System.out.println(driver.getPageSource());
比较一下

#5 楼 @sanlengjingvv 打印出来不一样

Before 里要点得是哪个,findElement 代码咋写的?

#9 楼 @sanlengjingvv driver.findElement(By.name("dian")).click();
操作完成后 driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIANavigationBar[1]/UIAButton[3]")).click();

#9 楼 @sanlengjingvv
最后是想用到//UIAApplication[1]/UIAWindow[1]/UIAScrollView[3]/UIAButton[1,2,3....] 这个 list

1、你说要点的同一个元素是哪个?这两个不一样呀?
By.name("dian”)
//UIAApplication[1]/UIAWindow[1]/UIANavigationBar[1]/UIAButton[3]

2、出错的地方 log 是什么?

13楼 已删除

#12 楼 @sanlengjingvv
List el = driver.findElements(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIAScrollView[2]/UIAButton"));
el.size()=0
el.get(1).click();下标越界

1、//UIAApplication[1]/UIAWindow[1]/UIAScrollView[2]/UIAButton
这句 XPath 在你发的 before xml 里没有匹配的元素,所以还是不知道你要点的元素是哪个

2、el.size()=0这句代码是做什么的

#15 楼 @sanlengjingvv int i=el.size();i=0; 是这样,这个我只是测试 el 里面的数量。before xml 是没有这个匹配元素,但是我在 Appium Inspenctor 中有的,在跑自动化的时候//UIAApplication[1]/UIAWindow[1]/UIAScrollView[2]/UIAButton 咋进了别的别的页面后,再回来就不一样了呢

比如这个页面 https://testerhome.com/topics/3709
1、登录前和登录后
2、回复前和回复后
3、一小时后和三小时后
html 都变化了

你还是把整个用例的代码都贴下吧. 没看明白

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