【问题标题】:Check WebView's URL while Unit Testing in Robotium在 Robotium 中进行单元测试时检查 WebView 的 URL
【发布时间】:2013-04-15 20:16:01
【问题描述】:

我试图找出最简单的方法来检查我的 (WebView) 中的主 Activity 的 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) {

    }
}

【问题讨论】:

    标签: java android url webview robotium


    【解决方案1】:

    首先,调用

    web.getSettings();
    

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

    要在 webview 中声明当前 url,您可以使用:

    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");
        }
    });
    

    【讨论】:

    • 我已经根据你的建议添加了上面的测试,我都得到了 NullPointerExceptions。
    • 对于 testWeb(),我的 LogCat 在 web.loadUrl 上说它为空。
    • - 如果你得到 NullPointerExceptions 可能 webview 是空的。确保您对该对象有正确的参考。 - loadUrl 是无效方法。什么是空的?
    • 添加了对 webview id 的引用。这解决了 testWeb 测试用例,谢谢你,但是 TestUrl 仍然返回 null。任何想法。
    • 我没有测试robotium的最新版本,但是你可以自己检查,如果你有webview对象:getUrl() - 它返回当前的url。确保在 UI 线程上运行它。
    【解决方案2】:

    查看网址的步骤如下:

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

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

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

    2) 添加一些 sleep 以便它等待加载 url 所花费的时间 solo.sleep(时间)

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

    4) 取一个布尔变量并存储 布尔变量 = solo.getWebUrl().equals("要测试的 URL");

    5) assertTrue(布尔变量) 验证值真假。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多