当前位置: 首页 > 知识库问答 >
问题:

webview上的浓缩咖啡

燕昊东
2023-03-14

在我的主要活动中,我有initUi函数,它将触发对webviewActivity的意图,在webviewActivity中,有一个FragWebView,其中加载了url。

以下是来自FragWebView的示例代码:

 WebView webView = (WebView) layout.findViewById(R.id.web_view);
        String url = getArguments().getString(Extras.URL, null);
        if(url != null){
            webView.clearCache(true);
            webView.clearHistory();

            webView.getSettings().setJavaScriptEnabled(true);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
            }

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                WebView.setWebContentsDebuggingEnabled(true);
            }

            webView.loadUrl(url);
            webView.setVisibility(View.VISIBLE);
        } else {
            webView.setVisibility(View.GONE);
        }

我从我的主要活动中传递打开webview的意图是:

Intent intent = new Intent(getContext(), ActivityWebView.class);

        intent.putExtra(Extras.URL, "https://www.racq.com.au/register?device=mobile");

        startActivity(intent);
        bottomToTopAnimation();
@RunWith(AndroidJUnit4.class)
public class ActivityRegistrationTest {

    @Rule
    public ActivityTestRule<ActivityWebView> mActivityRule =
            new ActivityTestRule<ActivityWebView>(ActivityWebView.class,
                    false, false) {
                @Override
                protected void afterActivityLaunched() {
                    onWebView().forceJavascriptEnabled();
                }
            };

    @Test
    public void testSingUpWebPage()throws Exception

    {
        try {
            Thread.sleep(30000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


        // check WELCOME text is present
        onWebView().withElement(findElement(Locator.ID, "register"))
                .check(webMatches(getText(), containsString("Register")));
        //Check UI elements text boxes and buttons are present on the page
        onWebView().check(webContent(hasElementWithId("l")));
        onWebView().check(webContent(hasElementWithId("phracq_body_0_phracq_contentcontainer_0_ucFirstName_txt")));
        onWebView().check(webContent(hasElementWithId("phracq_body_0_phracq_contentcontainer_0_ucLastName_txt")));
        onWebView().check(webContent(hasElementWithId("date_of_birth")));
        onWebView().check(webContent(hasElementWithId("phracq_body_0_phracq_contentcontainer_0_ucPostCode_txt")));
        //enter values
        onWebView().withElement(findElement(Locator.ID,"phracq_body_0_phracq_contentcontainer_0_ucFirstName_txt")).perform(webKeys("siddharth"));
    }
}
 // Espreso Dependencies
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
        androidTestImplementation 'com.android.support.test:rules:1.0.2'
        androidTestImplementation("com.android.support.test.espresso:espresso-contrib:2.2.2") {
            exclude group: 'com.android.support', module: 'appcompat'
            exclude group: 'com.android.support', module: 'support-v4'
            exclude group: 'com.android.support', module: 'support-v7'
            exclude group: 'com.android.support', module: 'design'
            exclude module: 'support-annotations'
            exclude module: 'recyclerview-v7'
        }
        androidTestImplementation('com.android.support.test.espresso:espresso-web:2.2') {
            exclude group: 'com.android.support', module: 'support-annotations'
        }

请让我知道如何解决这个问题。

问候

共有1个答案

柯星辰
2023-03-14

您可以使用“uiDevice”来实现这一点。

只需添加此受抚养人:

androidTestImplementation'com.android.support.test.uiAutomator:uiAutomator-v18:2.1.3'

@RunWith(AndroidJUnit4.class)
public class ActivityRegistrationTest {

    @Rule
    public ActivityTestRule<MainActivity> mActivityRule =
            new ActivityTestRule<MainActivity>(MainActivity.class,
                    false, false);
    @Before
    public void setUp() {
        mActivityRule.launchActivity(new Intent());
    }


    @Test
    public void testSingUpWebPage()throws Exception

    {
        final UiDevice mDevice =
                UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());

        final int timeOut = 1000 * 60;
        mDevice.wait(Until.findObject(By.clazz(WebView.class)), timeOut);
        try {
            UiObject membershipCardInput = mDevice.findObject(new UiSelector()
                    .instance(0)
                    .className(EditText.class));

            membershipCardInput.waitForExists(timeOut);
            membershipCardInput.setText("123456789");
        } catch (Exception e) {
            e.printStackTrace();
        } } }
 类似资料:
  • 当我试图编写一个与listview项交互的代码时,我得到了一个OmbyuousViewMatcherException异常。场景如下。 我有一个包含两个视图的listview 文本视图 按钮查看 我在列表中有将近250行。所有按钮都有文本“预订”或“取消”。他们在一个洗牌的顺序。我想直接点击列表中的第一个“预订它”按钮。我已经尝试了很多方案,但仍然无法找到解决方案。拜托谁帮帮我。 下面是我现在的代

  • 我试着用“浓缩咖啡”写简单的测试 但我有个错误: 我正在尝试不同的框架进行测试,对我来说是最好的,但如果有人能帮助修复这个错误,我将非常感激

  • 本文向大家介绍Android 设置意式浓缩咖啡,包括了Android 设置意式浓缩咖啡的使用技巧和注意事项,需要的朋友参考一下 示例 在build.gradle您的Android应用模块的文件中,添加下一个依赖项: 在文件中AndroidJUnitRunner为testInstrumentationRunner参数指定build.gradle。 此外,添加此依赖项以提供意图模拟支持 并将其添加为w

  • 在Espresso中,应用程序启动,测试以以下代码开始:onView(withId(r.id.choosebooktitle)).perform(click()); 这会崩溃,因为显示器仍然显示启动屏幕,而chooseBookTitle只有在之后才可见。如何防止谷歌-浓缩咖啡会在它出现之前点击键? (我不想插入等待循环,而是保持事件驱动。在更糟糕的情况下,我回到Robotium)

  • null 动画/转换被禁用,但这不会阻止CircularProgressLayout动画化。 我尝试,但即使这样,在第一次单击和第二次单击之间也要等待2秒。 我还试图滥用作为黑客来确认退出应用程序。这确实有效,但这是一个黑客。我只想让浓缩咖啡点击两次。 有什么建议如何使浓缩咖啡点击两次而不等待动画?

  • 我在做Espresso测试时遇到了一个问题,我知道Espresso不能处理动画,所以我在下面做了。-禁用我的测试设备窗口动画,过渡动画和动画师持续时间比例都设置为关闭(这不起作用)-然后我试图在我的代码中添加一个标志(如。espresso_testing=true。如果为true,我的代码将跳过调用所有startAnimation()函数调用。--->这很管用。然而,在编写espresso测试用例