zoukankan      html  css  js  c++  java
  • Robotium查找指定控件

    一、通过ID查找控件

    1  Activity act=solo.getCurrentActivity();
    2 
    3  int id=act.getResources().getIdentifier("id名称","id", act.getPackageName());//id名称通过界面查看器hierarchyviewer.bat查看
    4 
    5  View view=solo.getView(id);

    二、相同ID控件区分

             1)通过其他子控件先获取到父控件再获取子控件。

                 如:RelativieLayout下有两个子控件(TextView和ImageView)可以根据TextView文档内容获取到RelativeLayout控件

                 RelativeLayout parernt=(RelativeLayout)solo.getText("").getParent();

             2)再根据子控件在父控件中的位置确定子控件。
              ImeViagew search=(ImageView)parernt.getChildAt(0);

              如果是子控件ID与其他父控件中的子控件ID相同,而父控件中的ID不同则可以使用           

              ImeViagew search=(ImageView)parernt.findViewById(id);来获取控件。

    三、ListView控件下拉刷新

           

     1  //先得到ListView控件
     2 ListView listview=solo.getView(id);
     3 
     4 //存储坐标的数组
     5 int location[]=new int[2];
     6 
     7 //获取listiew的坐标
     8 listview.getLocationScreen(location);
     9 
    10 //坐标是从左上角开始的如果listview铺满整个界面那么坐标可能接近(0,0)
      solo.drag(location[0]+10,location[0]+10,location[1],location[1]+listview.getHeight(),3)

    四、WebView测试(Robotium很好的支持了webview)

             1)首先要看到webview中网页的源码(网址可以通过webview.getWeburl()来获得)

        2)获取webview中网页的标题(webview.getTitle()来获取)

        注:webview中的所有方法都需要UI线程中操作,不然会抛出异常。

    1 solo.getCurrentActivity().runOnUiThread(new Runnable() {
    2 
    3        @Override
    4        public void run() {
    5           webViewTitle = webView.getTitle();
    6           Log.i(Constants.LOG_TAG ,"获取对应webview的Title:" + webViewTitle);
    7        }
    8 });

             Solo中关于webview的方法有

             clearText InWebElement(By by)

             clickOnWebElement(By by)

             enterTextInWebElement(By by,String text)

            waitForWebElement(By by)

            从这些方法中可以看出来网页中可以通过By类来标识

            而By方法有:

        By.className() //了解css的应该知道类选择器

        By.cssSelector() //这个直接就是根据css选择器来的

               By.id()//控件的id

               By.name()//控件的名称

               By.tagName()// 标签的名称如<p>.

               By.TextContent()//控件中的吻别

               By.xpath()

            例如:solo.clickOnWebElement(By.className("link-ele"),0);//这个是根据类名来的后面的0是位置源码中用到这个类名的控件太多。

  • 相关阅读:
    反正我是猜错,关于javascript包装对象的一个坑
    《编写可维护的javascript》推荐的编码规范之——编程实践
    《编写可维护的javascript》推荐的编码规范之——编程风格
    35行的山寨版jQuery
    Css进度条
    nginx的location和proxy_pass是否带斜杠的区别
    mongodb笔记
    在安装完 docker for windows 之后,hype-v打开,之后再关闭,vmware无法使用,虚拟机报错:传输(vmdb)错误-32:pipe:read failed
    awk笔记备忘
    sed命令笔记备忘
  • 原文地址:https://www.cnblogs.com/CharlesGrant/p/4076757.html
Copyright © 2011-2022 走看看