[uiautomator篇] 找父亲节点和其他兄弟节点


https://testerhome.com/topics/1250

 

Appium 【已解决】 UiSelector 如何根据节点定位到父节点 / 兄弟节点?

liqing380 · 发布于  2014年08月11日 · 最后由  liqing380 回复于  2014年08月12日 · 2019 次阅读

结构如下:

 

 

String UiSelector="new UiSelector().className(\"android.widget.RelativeLayout\").childSelector(new UiSelector().className(\"android.widget.TextView\").text(\"Test邮件123xfm8c1o5\"))"; String xx=driver.findElementByAndroidUIAutomator(UiSelector).getText(); System.out.print("xx="+xx+"\n"); 

打印的是:Test222邮件123xfm8c1o5,也就是index为2的那个TextView节点。

问题:如何根据text是指定值的节点获取它的兄弟节点?

比如根据text值是Test邮件123xfm8c1o5的那个节点获取它的兄弟节点(index是0的那个textView)尝试:

driver.findElementsByAndroidUIAutomator(UiSelector+".fromParent(\"android.widget.RelativeLayout\").childSelector(new UiSelector().className(\"android.widget.TextView\").text(\"xfm8c1o5_1@qa186.cn\"))" ); 

报错:

org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information) 
共收到 12 条回复
1035
pajack · #1 · 2014年08月11日

可以试下 getFromParent().

1270

#1楼 @pajack getFromParent()的写法是?

1035
pajack · #3 · 2014年08月11日

@liqing380
假设你已定义了一个节点 "Test邮件"
UiObject mail = new UiObject(new UiSelector().text("Test邮件"));
利用该节点找到其兄弟:
UiObject content = mail.getFromParent(new UiSelector().text("Text内容"));

这是UiAutomator 的写法,在Appium 里要稍微变一下。

1270

#3楼 @pajack 
看了你的解答,瞬间明白fromParent的意思了,非常感谢。

driver.findElementByAndroidUIAutomator( "new UiSelector().text(\"Test222邮件123xfm8c1o5\").fromParent(new UiSelector().className(\"android.widget.TextView\").index(4))").getText(); 

这样就可以根据text是指定值Test222邮件123xfm8c1o5的节点获取到了它的兄弟节点(index是4的那个textView)了

1185
kuroky · #5 · 2014年08月12日

#4楼 @liqing380 给力

1058

学习!!

808
tom_ma · #7 · 2014年08月13日

学习~~

1401

#3楼 @pajack 你这种用法,不会提示中文乱码吗

1401

#4楼 @liqing380 UiObject mail = new UiObject(new UiSelector().text("Test邮件")); 你这种用法,不会提示中文乱码吗。

我试了下:运行用例时,提示:INSTRUMENTATION_STATUS: stack=com.android.uiautomator.core.UiObjectNotFoundException: UiSelector[TEXT=锟街伙拷锟絔

有什么解决办法吗

1401

#3楼 @pajack UiObject mail = new UiObject(new UiSelector().text("Test邮件")); 你这种用法,不会提示中文乱码吗。

我试了下:运行用例时,提示:INSTRUMENTATION_STATUS: stack=com.android.uiautomator.core.UiObjectNotFoundException: UiSelector[TEXT=锟街伙拷锟絔

有什么解决办法吗

1270

#10楼 @xiang2743 我这边很正常,没有乱码呢

1401

不好意思,我找到原因了,是因为编码的问题,改为UTF-8 就可以了

回帖
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请点击☺
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM