第二个Android本机页面焦点问题

时间:2019-06-28 09:44:57

标签: appium appium-android nosuchelementexception appium-desktop

在尝试自动执行android本机应用程序时,成功地使第一页登录功能成功实现自动化之后,Appium无法识别或专注于本机应用程序第二页上的任何单个元素。我尝试了所有的wait方法和驱动程序。上下文方法,但它现在正在工作。我试图调试具有这么多等待时间的代码,但是它不起作用。当我在自动化第一页后放置断点并尝试调试应用程序时,我观察到如果我放置任何在第二页上手动操作(打开窗口并关闭同一窗口),然后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 :(得分:0)

const connection = await MongoClient.connect(url, { useNewUrlParser: true }); var dbs = await connection.db('test').admin().listDatabases(); 声明无法找到该元素。在我看来,页面上Webelements的xpath定位器似乎不正确。

我建议您尝试remote debugging来确保定位器的正确组织。并使用远程调试工具-您也可以在此处即时检查定位器。

作为选项B)-我也建议快速浏览SeeTest automation工具。上面有关如何从头开始设置项目的指南,这里为public documentation for SeeTest