0

我是使用带有 TestNG 的 Appium 测试的移动应用程序自动化的新手。我正在练习自动化亚马逊应用程序,应用程序已成功启动,但是当我尝试单击登录选项时,它得到:

“失败:登录 org.openqa.selenium.NoSuchElementException:使用给定的搜索参数无法在页面上找到元素。(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0 毫秒”

    public void login() throws InterruptedException{

        System.out.println("Login check");
        Thread.sleep(3000);
//      String sample = driver.findElementByXPath("//*[@class='android.widget.Button' and @index='5']").getText();
        System.out.println("Next sleep");

//      driver.findElement(By.xpath("//[@class='android.widget.Button' and @index='5']')]")).click();
//      driver.findElement(By.id("in.amazon.mShop.android.shopping:id/sign_in_button")).click();
        driver.findElement(By.xpath("//android.widget.Button[@index='5']")).click();
        Thread.sleep(3000);
        System.out.println("Pass");

    }

图片: 在此处输入图像描述

4

2 回答 2

0

"//android.widget.Button[@index='5']"无效的xpath 定位器。如果您将使用 index (但我强烈建议不要这样做),请这样做:

"(//android.widget.Button)[5]"

但在您的情况下,最好的方法是按资源 ID 搜索:

driver.findElement(By.id("sign_in_button")).click();

如果它仍然不起作用,您可以在搜索元素之前打印应用程序屏幕 xml 结构:

System.out.println(driver.getPageSource())

分析你得到的xml,如果它包含你的按钮,它的属性是什么。

于 2017-11-29T10:06:22.123 回答
0

请尝试以下代码:

MobileElement el1 = (MobileElement) driver.findElementById("in.amazon.mShop.android.shopping:id/sign_in_button");

el1.click();
于 2017-12-06T11:30:14.113 回答