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

问题描述 投票:0回答:2

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

if(screenAisShown()) 
{
button1.click;
} else if(screenBisShown) {
button2.click;
}

在第一次迭代中,屏幕A显示,因此if块成功执行,并且在第二次迭代中显示屏幕B,但是如果阻塞则抛出NoSuchElementException,而不执行else if

TIA

appium appium-android
2个回答
0
投票

你可以创建一个方法isAScreenDisplayed()和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
}

0
投票

还有一种方法可以验证,你可以使用currentActivity方法将当前的屏幕Activity名称作为String返回

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)"
}
© www.soinside.com 2019 - 2024. All rights reserved.