1 Вопрос: Appium не может идентифицировать элементы на экране, даже если они были инициализированы с помощью initElements

вопрос создан в Thu, May 2, 2019 12:00 AM

Сценарий:

Я запускаю приложение на реальном устройстве Делать логин Посадка на домашний экран Элементы домашнего экрана не распознаются приложением в устройстве ANDROID. Я пытался нажать на значок справки в правом верхнем углу.

Обратите внимание , что выполнение действий с любым элементом Начального экрана выполняется с перебоями

Что я пробовал: - Ввод ожидания после того, как я войду. - возвращение объекта домашней страницы после того, как я войду - больше ждать, прежде чем я использую initElements для инициализации объектов домашней страницы. - внутри конструктора домашней страницы я попытался findElementsById, findElementById, я попытался поставить динамическое ожидание элемента перед вызовом initElements - перепробовал идентификаторы для всех элементов - попробовал xpath для всех элементов - попытался убить приложение и перезапустить приложение и снова попытался определить элементы - попробовал JavascriptExecutor - Попробовал метод нажатия

// Ниже представлен конструктор экрана объекта домашней страницы, который вызывается после входа в систему.

public HomePageObjectsNew(Config testConfig) {
        this.testConfig = testConfig;       
        PlatformName = testConfig.getRunTimeProperty("platformNameMobile");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

List<MobileElement> abc= MobileActions.findElementsById(testConfig, "frag_home_help_imgview_id");
testConfig.logComment(Integer.toString(abc.size()));
        PageFactory.initElements(new AppiumFieldDecorator(testConfig.driver, 5, TimeUnit.SECONDS), this);

    }

//*Login Method:*
public HomePageObjectsNew loginFlowUsingPassword() {
        swipeWalkthroughScreens();
        enterAlreadyExistingEmailID("coios6@yopmail.com");
        Browser.wait(testConfig, 2);
        MobileActions.waitForVisibility(testConfig, txtFldPassword, 
        "Password field");
        enterPassword();
        clickOnLogin();
        Browser.wait(testConfig, 4);
        return new HomePageObjectsNew(testConfig);

    }

//*My test case:*
@Test(description = "Verify successful Login of an existing now merchant using password flow", dataProvider = "GetMobileTestConfig", timeOut = 700000)
    public void verifyPaymentRequestButtonIsClickableAfterLogin(Config testConfig) {
        try {
            LoginSignUpPageObjects loginSignUpPageObjects = new LoginSignUpPageObjects(testConfig);
            HomePageObjectsNew obj = loginSignUpPageObjects.loginFlowUsingPassword();
            obj.btnHelpScreenHeader.click();
            MobileActions.goBack(testConfig);
            obj.clickOnHamburgerMenu();
            Browser.wait(testConfig, 2);
            obj.clickOnHamburgerMenu();
            loginSignUpPageObjects.clickOnRequestPayment();
            System.out.println("Request Button clicked");
        } catch (Exception e) {
            testConfig.logFail("verifyPaymentRequestButtonIsClickableAfterLogin failed !!");
            e.printStackTrace(System.out);
        }
    }

**Actual:** Not able to click on Home screen elements 
So if i try 10 times only 1 time it works ... NOTE that id's are not dynamic have already confirmed with DEV !!

**Expected:** I should be able to click on home page elements

Журналы Appium . [MJSONWP (6fbddb32)] Вызов AppiumDriver.findElements () с аргументами: ["id", "com.payu.payunow: id /frag_home_help_imgview_id", "6fbddb32-3ee5-4237-beee-c0496d88e69e"] [BaseDriver] Допустимые стратегии локатора для этого запроса: xpath, id, имя класса, идентификатор доступности, -android uiautomator [BaseDriver] Ожидание до 5000 мс для условия [AndroidBootstrap] Отправка команды на android: {"cmd": "action", "action": "find", "params": {"стратегии": "id", "селектор": "com.payu.payunow: id /frag_home_help_imgview_id», "контекст": "", "несколько": истинно}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Получены данные от клиента: {"cmd": "action", "action": "find", "params": {"стратегии": "id", "селектор": " com.payu.payunow: идентификатор /frag_home_help_imgview_id», "контекст": "", "несколько": истинно}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Получил команду типа ACTION [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Получено действие команды: найти [AndroidBootstrap] [BOOTSTRAP LOG] [отладка] Поиск 'com.payu.payunow: id /frag_home_help_imgview_id' с использованием 'ID' с contextId: '' multiple: true [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Использование: UiSelector [RESOURCE_ID = com.payu.payunow: id /frag_home_help_imgview_id] [AndroidBootstrap] [Журнал BOOTSTRAP] [отладка] Селектор getElements: UiSelector [RESOURCE_ID = com.payu.payunow: id /frag_home_help_imgview_id] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Элемент [] имеет значение null: (0) [AndroidBootstrap] [BOOTSTRAP LOG] [отладка] getElements tmp селектор: UiSelector [INSTANCE = 0, RESOURCE_ID = com.payu.payunow: id /frag_home_help_imgview_id] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Не удалось найти элемент. Очистка кеша доступности и повторная попытка. [AndroidBootstrap] [BOOTSTRAP LOG] [отладка] Поиск 'com.payu.payunow: id /frag_home_help_imgview_id' с использованием 'ID' с contextId: '' multiple: true

    
0
  1. Вы также можете публиковать журналы приложений?
    2019-05-03 03: 02: 14Z
  2. Здравствуйте, Manish, добро пожаловать в переполнение стека. Небольшое предложение: лучше добавить эту новую информацию в ваш вопрос, а не в комментарии. Это сделает новую информацию более заметной, что поможет вам получить лучшие ответы.
    2019-05-03 06: 47: 56Z
1 ответ                              1                         

Попробуйте подождать, пока элемент не будет включен. Вы можете использовать класс WebDriverWait . wait.until(ExpectedConditions.elementToBeClickable(<element_locator>), <your_timeout>)); р>     

0
2019-05-03 16: 42: 56Z
  1. я уже пробовал это .. это не работает .. обратите внимание, что проблема, с которой я сталкиваюсь, является прерывистой .. то есть иногда элемент нажимается иногда его нет ... так что вероятность успеха составляет 2 из 10
    2019-05-06 12: 57: 47Z
источник размещен Вот