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)
转载文章时务必注明原作者及原始链接,并注明「发表于 TesterHome 」,并不得对作品进行修改。
共收到 12 条回复

可以试下 getFromParent().

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

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

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

#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)了

#4楼 @liqing380 给力

学习!!

学习~~

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

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

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

有什么解决办法吗

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

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

有什么解决办法吗

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

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

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

[uiautomator篇] 找父亲节点和其他兄弟节点的更多相关文章

  1. Oracle递归查询父子兄弟节点

      1.查询某节点下所有后代节点(包括各级父节点) 1 // 查询id为101的所有后代节点,包含101在内的各级父节点 2 select t.* from SYS_ORG t start with ...

  2. JS获取子节点、父节点和兄弟节点的方法实例总结

    转自:https://www.jb51.net/article/143286.htm 本文实例讲述了JS获取子节点.父节点和兄弟节点的方法.分享给大家供大家参考,具体如下: 一.js获取子节点的方式 ...

  3. easyui Tree模拟级联勾选cascadeCheck,节点选择,父节点自动选中,节点取消,父节点自动取消选择,节点选择,所有子节点全部选择,节点取消,所有子节点全部取消勾选

    最近项目中用到easyui tree,发现tree控件的cascadeCheck有些坑,不像miniui 的tree控件,级联勾选符合业务需求,所以就自己重新改写了onCheck事件,符合业务需求.网 ...

  4. js 获取元素所有兄弟节点实例

    比如一个ul里面有10个li,而第3个li上有特殊的样式(比如颜色为红色,其他为黑色).我想把其他所有li——不包括红的li——的颜色也设为红色,此时,就需要获得红li的所有兄弟节点. 兄弟,就是和你 ...

  5. jQuery的父,子,兄弟节点查找方法

    以下罗列一下jQery下节点查找的方法: jQuery.parent(expr) 找父亲节点.能够传入expr进行过滤,比方$("span").parent()或者$(" ...

  6. [javascript] jquery的父子兄弟节点查找

    jQuery.parent(expr) 找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(&q ...

  7. JQuery的父、子、兄弟节点查找方法

    jQuery.parent(expr)           //找父元素 jQuery.parents(expr)          //找到所有祖先元素,不限于父元素 jQuery.children ...

  8. JQuery的父、子、兄弟节点查找,节点的子节点循环

    Query.parent(expr)           //找父元素 jQuery.parents(expr)          //找到所有祖先元素,不限于父元素 jQuery.children( ...

  9. jquery父、子、兄弟节点查找

    js var test = document.getElementById("test"); var parent = test.parentNode; // 父节点 var ch ...

随机推荐

  1. 【持续更新】CSS居中

    水平垂直居中 知道自身的宽度.高度 <div class="test"></div> <style> .test { position: abs ...

  2. PeopleSoft FSCM Production Support 案例分析

    PeopleSoft FSCM Production Support 案例分析 2010年的时候曾建言博客园开辟Oracle ERP模块供大家交流,博客园如约开辟Oracle ERP 模块,而我后来却 ...

  3. eclipse版本要求修改

    eclipse要求打开的是java1.6,而安装的是java1.7,这个时候需要修改配置 找到JAVA的安装路径, 点击前往-电脑-资源库-Java-javaVCirtualMachines-...- ...

  4. Azure 项目构建 - 用 Azure 认知服务在微信公众号上搭建智能会务系统

    通过完整流程详细介绍了如何在Azure平台上快速搭建基于微信公众号的智慧云会务管理系统. 此系列的全部课程 https://school.azure.cn/curriculums/11 立即访问htt ...

  5. vue分环境打包配置方法一

    直接上代码配置: 首先是config下面的文件修改 dev.env.js  'use strict' const merge = require('webpack-merge') const prod ...

  6. 异步 BeginInvoke

    委托的异步调用异步多线程的三大特点:1.同步方法卡界面,原因是主线程被占用:异步方法不卡界面,原因是计算交给了别的线程,主线程空闲2.同步方法慢,原因是只有一个线程计算:异步方法快,原因是多个线程同事 ...

  7. 洛谷 2299 Mzc和体委的争夺战

    题目背景 mzc与djn第四弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过前三弹的都知道).但如此之多的男家丁吸引来了我们的体委(矮胖小伙),他要来与mzc争夺男家丁. mzc很生气 ...

  8. 推荐一个免费的生成词云(word cloud)的在线工具

    "词云"这个概念由美国西北大学新闻学副教授.新媒体专业主任里奇·戈登(Rich Gordon)提出. "词云"就是对网络文本中出现频率较高的"关键词& ...

  9. CSS3制作的一款按钮特效

    /*.btn { width:230px; height:70px; font-size:70px; font-weight:bold; overflow:hidden; font: "He ...

  10. 【转】CPU个数,核心数,线程数

    我们在买电脑的时候,经常会看cpu的参数,对cpu的描述有这几种:“双核”.“双核四线程”.“四核”.“四核四线程”.“四核8线程”……. 我们接触的电脑基本上都只有一个cup.cpu的个数很容易得到 ...