Не удается найти локатор после предоставления разрешения "com.android.packageinstaller: id /missions_allow_button" в Selenium Appium - PullRequest
0 голосов
/ 10 октября 2018

Я автоматизирую приложение с селеном Appium Selenium, более поздняя версия Appium 1.9.1

Всякий раз, когда всегда запускается запуск приложения, разрешение отображается успешно, я могу щелкнуть разрешение с помощью автоматизации, но после предоставления разрешения appium не может найти элементыв приложении.

Если я нажимаю, например, в приложении вручную, нажимаю на следующую кнопку и снова нажимаю кнопку "Назад", тогда код приложения работает нормально.

Может кто-нибудь помочьмне, как я могу запустить свой сценарий, не делая ручного взаимодействия

Page class 

public class DriverSignUpPages {

    AndroidDriver<MobileElement> driver;
    public static final String packageName = "co.wapanda.android.beta";

    public DriverSignUpPages(WebDriver driver){
        this.driver = (AndroidDriver<MobileElement>)driver;
        PageFactory.initElements(new AppiumFieldDecorator(driver), this);
    }

    //-Storing element for pop up related access or permission 
    @AndroidFindBy(id = "com.android.packageinstaller:id/permission_allow_button")
    MobileElement permAlert;

    public void allowAccessLocation() {
        if(permAlert.isDisplayed()) {
            permAlert.click();
        } else {

        }
    }

    //-Store signUp locator and performed click action 
    @AndroidFindBy(id = packageName+":id/btn_signup")
    MobileElement signUpButton;

    public void clickOnSignUpButton() {
        signUpButton.click();
    }

    //-Store driversignup locator value and performed click action
    @AndroidFindBy(id = packageName+":id/btn_driver")
    MobileElement driverSignUp;

    public void clickOnDriverSignUp() {
        driverSignUp.click();
    }




------------------------------

Test case class 

public class ValidateDriverProcess {

    AppLaunch applaunch;
    DriverSignUpPages dprocess;
    AppiumDriver<MobileElement> driver;

    @BeforeMethod
    public void launchApplication( ) {
        applaunch = new AppLaunch();
        driver = (AppiumDriver<MobileElement>) applaunch.launchApplication();
    }

     @Test
    public void validateDriverSignupProcess() {
        try {
         DriverSignUpPages dprocess = new DriverSignUpPages(driver);
         Thread.sleep(5000);
         dprocess.allowAccessLocation();
         Thread.sleep(5000);
         dprocess.clickOnSignUpButton();
         Thread.sleep(5000);
         dprocess.clickOnDriverSignUp();
         Thread.sleep(5000);
         dprocess.enterSignUpDetail("test@abc.com", "9898989891", "123456");
         Thread.sleep(5000);
         dprocess.enterFirstAndLastNameInSignUp("Raj", "");
         Thread.sleep(5000);
         dprocess.enterVerificationCode("757575");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @AfterMethod
    public void closeApplication() {
        driver.quit();
    }


} 



------------

В журнале ошибок appium, показывая

[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result
{"status":7,"value":"No element found"}

not able to find this line 
//-Store signUp locator and performed click action 
 @AndroidFindBy(id = packageName+":id/btn_signup")
 MobileElement signUpButton;

1 Ответ

0 голосов
/ 11 октября 2018

Существует открытый выпуск с appium: после закрытия оповещения appium больше не обнаруживает ни одно из полей.

Обходные пути:

Вы можете поставитьприложение в фоновом режиме и запустите снова.driver.runAppInBackground (5);

ИЛИ

Получить координаты (x, y) любого элемента на экране, прежде чем открывать диалог, взаимодействовать с диалогом (например, выбирать элементы, закрыватьи т.д.) нажмите по координатам (x, y) после закрытия диалогового окна: новый TouchAction (драйвер) .tap (x, y) .perform ();

...