在Android Espresso UI测试中从Facebook注销
我有一些使用Facebook SDK的自动化测试: -在我的应用程序中注册 -登录我的应用程序 我运行注册测试,它基本上调用chrome,然后登录Facebook,使用infos在我的应用程序中继续注册过程 但当我想在模拟器上运行第二个测试时,请登录,我已经在Chrome上登录了Facebook,我想使用另一个帐户进行此测试在Android Espresso UI测试中从Facebook注销,android,facebook,testing,logout,android-espresso,Android,Facebook,Testing,Logout,Android Espresso,我有一些使用Facebook SDK的自动化测试: -在我的应用程序中注册 -登录我的应用程序 我运行注册测试,它基本上调用chrome,然后登录Facebook,使用infos在我的应用程序中继续注册过程 但当我想在模拟器上运行第二个测试时,请登录,我已经在Chrome上登录了Facebook,我想使用另一个帐户进行此测试 有办法在我的测试中注销吗?因为这个问题我找到了一种在UI测试中清除chrome的方法,这应该适用于法语或英语的手机: private void cleanChrome()
有办法在我的测试中注销吗?因为这个问题我找到了一种在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();
}
}