zoukankan      html  css  js  c++  java
  • [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+"
    ");
    

    打印的是: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

    可以试下 getFromParent().

    1270

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

    1035

    @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

    #4楼 @liqing380 给力

    1058

    学习!!

    808

    学习~~

    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
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  • 相关阅读:
    Hacking Tools
    SDN 网络系统之 Mininet 与 API 详解
    Rust安装配置
    研华 FWA-3231 单路E3平台
    Netscaler Configuration Architecture
    TCP拥塞控制算法纵横谈-Illinois和YeAH
    TCP协议疑难杂症全景解析
    Windows WMIC命令使用详解(附实例)
    Windows一个文件夹下面最多可以放多少文件
    喝酒游戏,概率分布和卷积
  • 原文地址:https://www.cnblogs.com/liuzhipenglove/p/7126044.html
Copyright © 2011-2022 走看看