Appium [已解决]刚发现的 appium1.0 xpath 定位的小 bug

思寒_seveniruby · 2014年05月17日 · 最后由 testly 回复于 2014年12月17日 · 2952 次阅读

环境

在手机上测试手机淘宝, 自动化手机淘宝的搜索
appium 1.0.0

过程

使用如下代码定位输入框

WebElement text; 
text = driver.findElement(By.xpath("//android.widget.EditText"));
System.out.println(text.getText());     
text = driver.findElement(By.xpath("//android.widget.EditText"));
System.out.println(text.getText());     
text = driver.findElement(By.xpath("//android.widget.EditText[1]"));
System.out.println(text.getText());     
text = driver.findElementByXPath("//android.widget.EditText[1]");
System.out.println(text.getText());
text = driver.findElementByAndroidUIAutomator("new UiSelector().className(\"android.widget.EditText\")");
System.out.println(text.getText());
text = driver.findElementByXPath("//*[@text='寻找宝贝、店铺']");
System.out.println(text.getText());
text = driver.findElementByClassName("android.widget.EditText");
System.out.println(text.getText());

运行时输出结果是

聚划算
寻找宝贝、店铺
寻找宝贝、店铺
寻找宝贝、店铺
寻找宝贝、店铺
寻找宝贝、店铺
寻找宝贝、店铺

可以发现前两次的定位方式一样, 但是结果却不一样, 初步怀疑是跟 appium 在进行 xpath 定位的时候, 每次都 dump 界面结构导致了写入读取延迟导致的.

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 7 条回复 时间 点赞

那么晚出分享~赞~

alibaba 不是有自动化测试框架吗?难道还这样写脚本的吗? 测试数据没分离,很多操作都是重复的,这样的代码可扩展性、维护性不强啊! 所有期待你更多的介绍集成 appium 的测试框架

#2 楼 @tspring 你理解错了, 我不在 alibaba 只是借用了他们的产品做练习 demo, 这不是用例, 只是个烂代码写的 demo, 为的是浅显易懂和验证功能.

@seveniruby 请教下后来是如何解决这个问题的呢? 我发现在使用 appium 1.0 做练习的时候,也会遇到这种问题。 我是在搜索结果页面,尝试清空搜索历史,发现 RelativeLayout 的数量只有在最开始一次运行返回正确的结果,就是数字 3,后来运行就总是会返回 1。

WebElement text = driver.findElementByClassName("android.widget.EditText");
text.click();

List RelativeLayout = null;
RelativeLayout = driver.findElementsByXPath("//android.widget.RelativeLayout");
System.out.println(RelativeLayout.size());

#4 楼 @tom_ma 我看官方已经修复了这个问题, 建议你使用最新的版本验证下。

@seveniruby 确实已解决,谢谢。

你是用什么方法找到 Xpath 后面的值得?我看你都是填 Classname 其实后面【1】代表第一个元素?

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