Appium 根据屏幕状态执行操作(Android JAVA)

Appium 根据屏幕状态执行操作(Android JAVA),appium,appium-android,Appium,Appium Android,假设我有两个屏幕“A”和“B”,如果显示屏幕“A”,我想执行操作“1”,如果显示屏幕“B”,我想执行操作“2”。最初,我使用if-else语句检查屏幕“A”和“B”是否存在,但不起作用。这是我的密码 if(screenAisShown()) { button1.click; } else if(screenBisShown) { button2.click; } 在第一次迭代中显示A,因此if块成功执行,在第二次迭代中显示B,但是没有为if块抛出任何UCHELEMENTEXCEPTION,并

假设我有两个屏幕“A”和“B”,如果显示屏幕“A”,我想执行操作“1”,如果显示屏幕“B”,我想执行操作“2”。最初,我使用if-else语句检查屏幕“A”和“B”是否存在,但不起作用。这是我的密码

if(screenAisShown()) 
{
button1.click;
} else if(screenBisShown) {
button2.click;
}
在第一次迭代中显示A,因此if块成功执行,在第二次迭代中显示B,但是没有为if块抛出任何UCHELEMENTEXCEPTION,并且没有执行else if


TIA

您可以创建一个方法isScreenDisplayed()isBScreenDisplayed()

public static boolean isAScreenDisplayed(){
   try{
       return elementOfAScreen.isDisplayed();
   }catch(Exception e){
       return false;
   }
}

public static boolean isBScreenDisplayed(){
   try{
       return elementOfBScreen.isDisplayed();
   }catch(Exception e){
       return false;
   }
}
现在您可以使用if-else条件检查显示的屏幕

if(isAScreenDisplayed){
   //do something
}
else if(isBScreenDisplayed){
   //do something
}

还有一种验证方法,您可以使用
currentActivity
方法将当前屏幕
Activity
名称作为
字符串返回

if(driver.currentActivity().equals("Screen1 Activity Name")) 
{   
    // wait for button1 code
    if (button1.isDisplayed())
        button1.click;
} 
else if(driver.currentActivity().equals("Screen2 Activity Name")) {
    // wait for button2 code
    if (button2.isDisplayed())
        button2.click;
}
else{
   syso("Screen 1 OR Screen 2 are not in focus)"
}

谢谢你的回复。不幸的是,其中一个屏幕是自定义对话框,没有屏幕活动名称。我尝试使用“try-catch”块返回屏幕状态,并在测试类中使用“if-else”调用该方法。这对我有用。