代码之家  ›  专栏  ›  技术社区  ›  Ben-J

在Android Espresso UI测试中从Facebook注销

  •  4
  • Ben-J  · 技术社区  · 6 年前

    我有一些使用Facebook SDK的自动测试: -在我的应用程序中注册 -登录我的应用程序

    我运行注册测试,它基本上调用chrome,然后登录Facebook,使用infos在我的应用程序中继续注册过程。

    但是当我想在模拟器上运行第二个测试时,请登录,我已经在Chrome上登录了Facebook,我想使用另一个帐户进行此测试。。。

    有没有办法注销我的测试?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ben-J    4 年前

    由于这个问题,我找到了一种在UI测试中清除chrome的方法,这应该适用于法语或英语的手机:

    private void cleanChrome() {
        final UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
        try {
            //Clear chrome data
            String urlString = "http://nurburgring.ben-j.fr";
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString));
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setPackage("com.android.chrome");
            try {
                KlaxitApp.getContext().startActivity(intent);
            } catch (ActivityNotFoundException ex) {
                // Chrome browser presumably not installed so allow user to choose instead
                intent.setPackage(null);
                KlaxitApp.getContext().startActivity(intent);
            }
            mDevice.wait(Until.findObject(By.clazz(WebView.class)), 10 * 1000);
            //Check if never used
            acceptChromeCgus();
    
            UiObject urlField = mDevice.findObject(new UiSelector().className(EditText.class));
            urlField.click();
            urlField.setText("chrome://history");
            mDevice.pressEnter();
    
            Thread.sleep(5000);
    
            UiObject clearBTN = mDevice.findObject(new UiSelector().className(Button.class).descriptionContains("CLEAR"));
            if (clearBTN.exists()) {
                clearBTN.click();
            } else {
                clearBTN = mDevice.findObject(new UiSelector().textContains("CLEAR"));
                if (clearBTN.exists()) {
                    clearBTN.click();
                } else {
                    //french phone
                    clearBTN = mDevice.findObject(new UiSelector().className(Button.class).textContains("EFFACER LES DONNÉES DE NAVIGATION"));
                    if (clearBTN.exists()) {
                        clearBTN.click();
                    }
                }
            }
    
            //Period required on dev phone but not on CI
            UiObject periodBTN = mDevice.findObject(new UiSelector().textContains("Dernière heure"));
            if (periodBTN.exists()) {
                periodBTN.click();
                UiObject allPeriodTV = mDevice.findObject(new UiSelector().textContains("Toutes"));
                if (allPeriodTV.exists()) {
                    allPeriodTV.click();
                }
            }
    
            Thread.sleep(1000);
            clearBTN = mDevice.findObject(new UiSelector().className(Button.class).descriptionContains("CLEAR"));
            if (clearBTN.exists()) {
                clearBTN.click();
            } else {
                //french phone
                clearBTN = mDevice.findObject(new UiSelector().className(Button.class).textContains("EFFACER LES DONNÉES"));
                if (clearBTN.exists()) {
                    clearBTN.click();
                }
            }
    
            UiObject clearDataBTN = mDevice.findObject(new UiSelector().className(Button.class).textContains("CLEAR DATA"));
            if (clearDataBTN.exists()) {
                clearDataBTN.click();
            } else {
                //french phone
                clearDataBTN = mDevice.findObject(new UiSelector().className(Button.class).textContains("EFFACER"));
                if (clearDataBTN.exists()) {
                    clearDataBTN.click();
                }
            }
    
            //Popup
            UiObject okBTN = mDevice.findObject(new UiSelector().className(Button.class).textContains("OK"));
            if (okBTN.exists()) {
                okBTN.click();
            } else {
                okBTN = mDevice.findObject(new UiSelector().className(Button.class).textContains("CLEAR"));
                if (okBTN.exists()) {
                    okBTN.click();
                }
            }
    
            final String connectWith = getResourceString(R.string.Connect_with);
            UiObject connectWithTV = mDevice.findObject(new UiSelector().className(TextView.class).text(connectWith));
            while (!connectWithTV.exists()) {
                Thread.sleep(2000);
                Timber.i("PRESS BACK");
                mDevice.pressBack();
                Thread.sleep(2000);
                connectWithTV = mDevice.findObject(new UiSelector().className(TextView.class).text(connectWith));
            }
        } catch (Exception e) {
            e.printStackTrace();
            mDevice.pressBack();
        }
    }