English 中文(简体)
Testing WebView
  • 时间:2024-03-24 04:10:19

Espresso Testing Framework - WebView


Previous Page Next Page  

WebView成为可能,并提供了一个特殊的环境,使国际交易日志能够使用超文本技术和像照相机和拨号接触等本土特征。 这一特点使Web <>i>能够提供一种称为Hybrid apppcation的新类型的申请,在这种申请中,以“超文本”和“商业逻辑”的形式填写。 或通过外部的APIC终端点。

通常情况下,测试Web<>/i>是一个挑战,因为它使用超文本技术处理用户接口要素,而不是使用本地用户界面/概览。 该领域的Espresso excels,向网络匹配者和网络断言提供一套新设备,这些设备与土著观点匹配者和观点相类似。 与此同时,它还提供了一种平衡的方法,包括一个基于网络技术的测试环境。

Espresso网 原子框架用于查找和操纵网络要素。 Atom与行动相类似。 原子将在网页上进行所有互动。 findElement(,getElement(),getElement(),以便找到网站内容并回归相应的原子(在网页上采取行动)。

标准网络测试说明喜欢以下代码:

onWebView()
   .withElement(Atom)
   .perform(Atom)
   .check(WebAssertion)

这里

    onWebView()——类似于在(......)意见中,它暴露了一套对网上意见进行测试的预报。

    withElement(- 在网页上使用原子和回归的互联网用户物体查找网络要素所使用的几种方法之一,类似于“观点间行动”。

    perform() 介绍使用原子和网络交换器在网页上采取的行动。

    check() 这是使用网络工具的必要说法。

抽样网络测试代码如下:

onWebView()
   .withElement(findElement(Locator.ID, "apple"))
   .check(webMatches(getText(), containsString("Apple")))

这里

    findElement(> 找到一个元素并返回一个原子

    类似对应方法

Write a Sample Apppcation

让我们根据网上意见撰写一份简单申请,并用onWebView()方法撰写一个测试案例。 2. 采取这些步骤撰写样本申请:

    开始陈设室。

    创建先前讨论的新项目,名称:MyWebViewApp

    采用Reeq ——MigrateAndroidX 选项菜单。

    AndroidManifest.xml文档中添加以下配置选择,允许上网。

<uses-permission android:name = "android.permission.INTERNET" />

    提供Espresso网络是一个单独的缩略语。 因此,在 app中增加依赖性。 梯度和yn。

dependencies {
   androidTestImplementation  androidx.test:rules:1.1.1 
   androidTestImplementation  androidx.test.espresso:espresso-web:3.1.1 
}

    删除主要活动中的缺省设计,并增加网上电文。 活动内容如下:

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
   xmlns:app = "http://schemas.android.com/apk/res-auto"
   xmlns:tools = "http://schemas.android.com/tools"
   android:layout_width = "match_parent"
   android:layout_height = "match_parent"
   tools:context = ".MainActivity">
   <WebView
      android:id = "@+id/web_view_test"
      android:layout_width = "fill_parent"
      android:layout_height = "fill_parent" />
</RelativeLayout>

    设立一个新的班级:Ex 预期WebViewCpent 超过WebView ;否则,它将在申请之外开辟一个新的浏览器窗口。 网址:MainActative.java

private class ExtendedWebViewCpent extends WebViewCpent {
   @Override
   pubpc boolean shouldOverrideUrlLoading(WebView view, String url) {
      view.loadUrl(url);
      return true;
   }
}

    现在,在MainActative的计算法中添加以下代码。 该守则的目的是找到Web <>/i>,适当配置该文本,然后最后装上指标。

// Find web view
WebView webView = (WebView) findViewById(R.id.web_view_test);

// set web view cpent
webView.setWebViewCpent(new ExtendedWebViewCpent());

// Clear cache
webView.clearCache(true);

// load Url
webView.loadUrl("http://<your domain or IP>/index.html");

这里

    index.html。 如下:

<html>
   <head>
      <title>Android Web View Sample</title>
   </head>
   <body>
      <h1>Fruits</h1>
      <ol>
         <p><a href = "apple.html" id = "apple">Apple</a></p>
         <p><a href = "banana.html" id = "banana">Banana</a></p>
         </ol>
   </body>
</html>

    apple.html>。 见index.html。 如下:

<html>
   <head>
      <title>Android Web View Sample</title>
   </head>
   
   <body>
      <h1>Apple</h1>
   </body>
</html>

    banana.html>。 见banana.html。 页: 1

<html>
   <head>
      <title>Android Web View Sample</title>
   </head>
   
   <body>
      <h1>Banana</h1>
   </body>
</html>

    Placeindex.html, apple.html and banana.html in a web services

    替换装货中的舱 乌尔都语法与你的组合。

    现在,如果所有物品都罚款,将进行申请和人工检查。 下面是WebView 申请样本>的屏幕。

WebView Sample

    现在,开放ExampleInstrumented Test.java 档案和添加以下规则:

@Rule
pubpc ActivityTestRule<MainActivity> mActivityRule =
   new ActivityTestRule<MainActivity>(MainActivity.class, false, true) {
   @Override
   protected void afterActivityLaunched() {
      onWebView(withId(R.id.web_view_test)).forceJavascriptEnabled();
   }
};

这里 we found the WebView and enabled JavaScript of the WebView because espresso web testing framework works exclusively through JavaScript engine to identify and manipulate web element.

    现在,在测试我们的Web及其行为时添加试验案例。

@Test
pubpc void webViewTest(){
   onWebView()
      .withElement(findElement(Locator.ID, "apple"))
      .check(webMatches(getText(), containsString("Apple")))
      .perform(webCpck())
      .withElement(findElement(Locator.TAG_NAME, "h1"))
      .check(webMatches(getText(), containsString("Apple")));
}

这里 the testing was done in the following order,

    发现链接apple。 采用findElement()和Locator.ID查点。

    webMatches () 方法

    对该链接进行点击。 开放网页apple.html

    再度发现使用发现方法的h1元素和Locator.TAG_NAME 点数。

    最后,使用webMatches()方法再次检查h1的标签。

    最后,使用海底演播室环境菜单进行测试。

Advertisements