遇到了一个非常奇怪的问题,我直接点 A 页的某个元素,appium 是可以被点击的,但是我点 B 页面,再进入 A 页面点那个元素就出错了,搞了半天才发现原来 B 页面的也有路径(UIAScrollView),指向的还是同一个地方的,但是里面的子元素发生变化了,导致 appium 找不到元素就出错了(试过直接用 xpath,name 都不行),估计里缓存没刷新导致的,有没有什么办法解决的
B:
A:
环境:IOS+Java+Eclipse+Mac10.10.4
没搞懂你的问题。
appium 的缓存只会缓存你 find 过的对象,只要重新 find 一次就不会用缓存啊。
#1 楼 @chenhengjie123 这个和 uiautomator 有关。
#2 楼 @lihuazhang 这不是 iOS ?
#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 是什么?
#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 都变化了
你还是把整个用例的代码都贴下吧. 没看明白