我正在尝试在我的以沉浸式模式运行的应用上运行测试。
但是,当我尝试点击导航栏通常位于的位置时,没有任何反应,因为UiDevice
认为屏幕比实际屏幕小。
即。它认为屏幕高2076像素,实际上现在是2152.无论如何都可以访问额外的76像素屏幕吗?
我的应用代码的一个粗略示例如下......
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 18)
public class ScreenShotTest {
private static final String BASIC_SAMPLE_PACKAGE = "my.package.name";
private UiDevice mDevice;
@Before
public void startMainActivityFromHomeScreen() {
context = InstrumentationRegistry.getTargetContext();
pref = context.getSharedPreferences("my_preferences", MODE_PRIVATE);
// Initialize UiDevice instance
mDevice = UiDevice.getInstance(getInstrumentation());
// Wait for launcher
final String launcherPackage = getLauncherPackageName();
assertThat(launcherPackage, notNullValue());
mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), LAUNCH_TIMEOUT);
// Launch the blueprint app
final Intent intent = context.getPackageManager().getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); // Clear out any previous instances
context.startActivity(intent);
}
@Test
public void allTests() throws InterruptedException, UiObjectNotFoundException {
int i = 0;
boolean mainMenuFinished = false;
while(!mainMenuFinished && i < 600) {
i++;
sleep(1000);
mainMenuFinished = pref.getBoolean(MAIN_MENU_FINISHED, false);
}
int j = 0;
int[] buttonBounds = new int[2];
for (String s : pref.getString(name, "").split(",")) {
buttonBounds[j] = Math.round(Float.parseFloat(s));
j++;
}
mDevice.click(buttonBounds[0], buttonBounds[1]);
}
我在我的实际apk中的共享pref中设置我的按钮的像素位置,然后我的测试apk正在读取值并点击该位置。
我的真实应用的屏幕宽度为2152(横向)我的测试apk只认为屏幕是2076.