码迷,mamicode.com
首页 > Web开发 > 详细

robotium之webview元素处理

时间:2020-12-05 10:34:08      阅读:8      评论:0      收藏:0      [点我收藏+]

标签:osi   cas   inf   必须   scree   manage   web   地址栏   关于   

robotium之webview元素处理

今天写robotium脚本发现,用uiautomatorviewer定位百度贴吧的登录框是无法定位的,如图:

技术图片

明显无法定位用户名、密码输入框,无法定位元素那就无法对控件无法操作

如何定位webview元素?

解决方案:

step:

1、手机连接上电脑,并打开App,打开需要定位的Webview的页面
2、电脑上打开Chrome,地址栏输入 chrome://inspect
3、点击devices标签,此时你会看到你设备上对应的App的包名

ps:必须***链接外网,否则看不到效果

技术图片

4、点击包名旁边的 inspect ,就会进入chrome的调试工具,在这个调试工具就可以获取
当前webview的所有元素了。
技术图片

测试百度app登录源码:

package com.example.tieba.test;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import android.os.PowerManager;
import android.test.ActivityInstrumentationTestCase2;

import com.robotium.solo.By;
import com.robotium.solo.Solo;

public class TestBaiduApp extends ActivityInstrumentationTestCase2 {

    // 定义变量
    private Solo solo;
    private static final String packageName = "com.baidu.tieba";
    private static final String launchActivityName = "com.baidu.tieba.LogoActivity";
    private PowerManager.WakeLock wakeScreenObject = null;
    // 定义启动activity类
    private static Class<?> loginActivity;
//    通过初始化静态块,加载启动activity
    static {
        try {
            loginActivity = Class.forName(launchActivityName);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public TestBaiduApp() {
        super(packageName, loginActivity);
        // TODO Auto-generated constructor stub
    }
    private void init() {
        solo = new Solo(getInstrumentation(), getActivity());
        solo.scrollToSide(solo.LEFT, 0.9f);
        // 唤醒设备
        if (wakeScreenObject == null) {
            wakeScreenObject = Util.wakeScreen(this);
        }
    }
    @Before
    protected void setUp() throws Exception {
        super.setUp();
        init();

    }

    @After
    protected void tearDown() throws Exception {
        solo.finishOpenedActivities();
    }

    @Test
    public void test() {
        assertTrue("如没进入登录页,可能有bug", solo.waitForText("随便看看", 1, 2000));
        solo.clickOnText("登录",1);
        //webview元素处理
//        输入用户名
        solo.clearTextInWebElement(By.id("login-username"));
        solo.enterTextInWebElement(By.id("login-username"), username);
//        输入密码
        solo.clearTextInWebElement(By.id("login-password"));
        solo.enterTextInWebElement(By.id("login-password"), password);
//        点击登录
        solo.clickOnWebElement(By.id("login-submit"),1);
        solo.sleep(10000);
    }

}

EOF

本文作者:久曲建的测试窝
本文链接:https://www.cnblogs.com/longronglang/p/6489313.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
优秀不够,你是否无可替代

软件测试交流QQ群:721256703,期待你的加入!!

欢迎关注我的微信公众号:软件测试君
技术图片

robotium之webview元素处理

标签:osi   cas   inf   必须   scree   manage   web   地址栏   关于   

原文地址:https://blog.51cto.com/15009374/2557526

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!