今天写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);
} }

robotium之webview元素处理的更多相关文章

  1. Robotium源码解读-native控件/webview元素的获取和操作

    目前比较有名的Uitest框架有Uiautomator/Robotium/Appium,由于一直对webview元素的获取和操作比较好奇,另外Robotium代码量也不是很大,因此打算学习一下. 一. ...

  2. H5混合应用之webview元素定位工具

    一.工具选择 webview元素定位有三种方式: 使用driver.page_source方法,将获取到的页面内容写入到一个html文件中,然后使用浏览器打开html文件,使用F12调试用具进行元素定 ...

  3. webview元素定位

    genymotion 模拟器:android  5.0.0 python 2.7 appium 1.4.16.1 1.app原生元素定位(常用) driver.find_element_by_id(“ ...

  4. Appium 自动化测试(9) -- 在Uiautomator中查看webview元素

    在uiautomator中,直接查看不到webview中的元素,不知道大家遇到过没有?如下 解决方法如下: step0:将uiautomator关闭 step1:在appium 中,设置Android ...

  5. ios与js交互获取webview元素和赋值

    使用webview的stringByEvaluatingJavaScriptFromString的方法交互,直接提供实例. 下载:http://download.csdn.net/detail/hey ...

  6. 解决 hybird 应用中重复获取 WebView,导致页面元素无法识别的问题

    转载地址:http://blog.csdn.net/testman930/article/details/50799532 问题描述 在测APP的业务流,WebView和Native模式耦合在一起.例 ...

  7. Android——WebView

    WebView用途 通过Intent调用系统浏览器: 引言: Uri uri = Uri.parse(url);//url为你要链接的地址 Intent intent = new Intent(Int ...

  8. Robotium原则的实施源代码分析

    从前面的章节<Robotium源代码分析之Instrumentation进阶>中我们了解到了Robotium所基于的Instrumentation的一些进阶基础.比方它注入事件的原理等,但 ...

  9. Robotium源码分析之运行原理

    从上一章<Robotium源码分析之Instrumentation进阶>中我们了解到了Robotium所基于的Instrumentation的一些进阶基础,比如它注入事件的原理等,但Rob ...

随机推荐

  1. (转)Java transient关键字使用小记

    背景:最近在看java底层的源码实现,看到一个关键字,不是很熟悉,专门做个记录. 原文出处:http://www.importnew.com/21517.html#comment-637072 哎,虽 ...

  2. JDBC详解(二)

    一:Statement与PreparedStatement的注意点 存在sql注入的危险,如果用户传入的id为“2 or 1=1”,将删除表中的所有数据.而PreparedStatement有效的防止 ...

  3. 牛客练习赛29 F 算式子

    https://www.nowcoder.com/acm/contest/211/F 经典题. 1.分区间 2.向下取整的值变化 & 合并相同值 #include <bits/stdc+ ...

  4. 线程的状态有哪些,线程中的start与run方法的区别

    线程在一定条件下,状态会发生变化.线程一共有以下几种状态: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法. ...

  5. bin内置函数

    光棍们对1总是那么敏感,因此每年的11.11被戏称为光棍节.小Py光棍几十载,光棍自有光棍的快乐.让我们勇敢地面对光棍的身份吧,现在就证明自己:给你一个整数a,数出a在二进制表示下1的个数,并输出. ...

  6. go 基础(二)

    strings和strconv使用 1.strings使用 strings.HasPrefix(s string, prefix string) bool:判断字符串s是否以prefix开头. str ...

  7. scatter

    一.matplotlib.pyplot.scatter用来画散点图 import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcPar ...

  8. TCP和UDP基本原理

    TCP和UDP基本原理 传输层的主要任务就是建立应用程序间的端到端连接,并且为数据传输提供可靠或不可靠的通信服务,TCP/IP协议族的传输层协议主要包括TCP和UDP ,TCP是面向连接的可靠的传输层 ...

  9. logstash收集IIS日志

    匹配字段 %{TIMESTAMP_ISO8601:log_timestamp} (%{WORD:s-sitename}|-) (%{IPORHOST:s-ip}|-) (%{WORD:cs-metho ...

  10. NGUI的UIRoot会移动

    我在做一个游戏的时候,发现NGUI的UIRoot会自己移动位置,最初创建UIRoot的时候是可以随便拖动的,只要它自己移动了位置,你就拖不动它了,而且UIRoot下面的摄像机也会变成类似主摄像机之类的 ...