Вторая проблема с родной страницей Android - PullRequest
0 голосов
/ 28 июня 2019

При попытке автоматизировать собственное приложение для Android, Appium не идентифицирует и не фокусируется на каком-либо отдельном элементе на второй странице собственного приложения после успешной автоматизации функции входа на первую страницу. Я пытался использовать все методы ожидания и драйвер. Метод контекста, но теперь он работает. Я пытался отлаживать код с таким большим количеством времени ожидания, но он не работает. Когда я ставил точку останова после автоматизации первой страницы и пытался отлаживать приложение, я заметил, что если я ставлю какие-либо ручное действие на второй странице (откройте окно и закройте то же самое окно), затем appium также позволяет идентифицировать вторую страницу, но я не понимаю, почему это происходит. По сценарию автоматизации я не могу ничего сделать на второй странице. команда поможет мне за то же самое? Исходный код страницы для второй страницы: - "

Я попробовал описанный ниже метод для идентификации второй страницы.

  driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
         ICapabilities caps = driver.Capabilities;

         String context = driver.Context;
         Console.WriteLine("Current context", context);
         driver.Context = ("NATIVE_APP");
         String afterloginsource   = driver.PageSource;

         Console.WriteLine("After loginv page source :- ", afterloginsource);

         TouchAction t = new TouchAction(driver);
         t.Tap(100, 100).Perform();

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2400));

         String loginsource = driver.PageSource;

         Console.WriteLine("Befor login page source :- ",loginsource);


         driver.HideKeyboard();
         //enter valid account
         driver.FindElementById("com.Testing:id/userid").SendKeys("00229715");//uat02
        // driver.HideKeyboard();
         /////driver.FindElement(By.XPath("//android.widget.EditText[@index='1']")).SendKeys("17765919"); ////upn02

         ///enter valid password

         driver.FindElementById("com.Testing:id/password").SendKeys("1");

         ///click login button

         driver.FindElementById("com.Testing:id/login").Click();
         driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
         driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(200));

         ICapabilities caps = driver.Capabilities;

         String context = driver.Context;
         Console.WriteLine("Current context", context);
         driver.Context = ("NATIVE_APP");
         String afterloginsource   = driver.PageSource;

         Console.WriteLine("After loginv page source :- ", afterloginsource);

         TouchAction t = new TouchAction(driver);
         t.Tap(100, 100).Perform();
AndroidElement expandList = driver.FindElementById("com.Testing:id/btn_more_options");
         expandList.Click();  Or  //((IJavaScriptExecutor)driver).ExecuteScript("mobile: scroll", scrollObject);
         //IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
         //IWebElement hiddenButton = driver.FindElementById("com.Testing:id/enableNotify");
         //String script = "arguments[0].click();";

         //js.ExecuteScript(script, hiddenButton);

выдает ошибку как исключение nosuchelement для любого элемента на второй странице.

1 Ответ

0 голосов
/ 04 июля 2019

NoSuchElement указывает на невозможность найти элемент. Мне очень кажется, что локаторы xpath к элементам на странице неверны.

Я рекомендую попробовать удаленную отладку , чтобы убедиться, что локаторы организованы правильно. А с помощью инструмента удаленной отладки - вы также можете проверить локаторы там на лету.

Как вариант B) - я также мог бы порекомендовать взглянуть на SeeTest средства автоматизации . Ссылка выше руководства о том, как настроить проект с нуля, и вот публичная документация для SeeTest .

...