在Robotium中进行单元测试时检查WebView的URL

时间:2013-04-15 20:16:01

标签: java android url webview robotium

我试图找出检查我的(WebView)中的主要活动的URL的最简单方法。这将使用Robotium 4.1框架进行单元测试。所有我想弄清楚我如何与webview进行交互,比如发送活动一个URL加载,所以我可以测试它并确保加载了正确的URL,并检查我的操作栏项目。

任何代码,建议或建议都将受到高度赞赏。

public class ErrorHandling extends
    ActivityInstrumentationTestCase2<Webview_Main> {
        private Solo solo;
        private WebView web;
 ..
protected void setUp() throws Exception {
    super.setUp();
    solo = new Solo(getInstrumentation(),getActivity());
}

根据建议更新(目前 - NullPointerException Erorrs)

public void testUrl() {
    String URL = solo.getString(com.example.webview.R.string.url);

         web = (WebView) getActivity().findViewById(R.id.webview_main); //Added

    try {
    solo.assertCurrentActivity("Launching Main Activity", Webview_Main.class);
    assertTrue(solo.getWebUrl().equals("URL")); } 
    catch (Error error) {
}
}
public void testWeb() {
    try {
                    web = (WebView) getActivity().findViewById(R.id.webview_main); //Added
        solo.getCurrentActivity().runOnUiThread(new Runnable() {
            public void run() {
                web.loadUrl("http://www.google.com");
            }
        });
        solo.sleep(1000);
    } catch (Error error) {

    }
}

2 个答案:

答案 0 :(得分:3)

首先,致电

web.getSettings();

什么都不给你。它为您提供WebSettings,但您不对该对象执行任何操作。

要在您的网页浏览中断言当前网址,您可以使用:

assertTrue(solo.getWebUrl().equals("your url"));

要在webview中加载指定的url,你必须在另一个线程中运行它(这里我不确定,如果它应该是runOnMainSync或runOnUiThread,但是我尝试了runOnUiThread并且它工作正常),例如:

solo.getCurrentActivity().runOnUiThread(new Runnable() {
    public void run() {
        web.loadUrl("http://www.OTHER_url_TO_test_AGAINST");
    }
});

答案 1 :(得分:1)

检查URL的步骤如下:

1)为特定应用程序创建webview对象

obj =(WebView)getActivity()。findViewById((源包名或apk).R.id。(源webview的ID))

注意:如果你没有编写测试用例的源应用程序的源代码,那么使用层次结构查看器来查找webview的id。

2)添加一些睡眠,以便等待加载网址所花费的时间 的 solo.sleep(时间)

3)使用此选项获取应用程序的当前值或状态。 的 obj.getSettings()

4)取一个布尔变量并存储值 布尔变量= solo.getWebUrl()。equals(“要测试的网址”);

5) assertTrue(布尔变量) 验证值true或false。