繁体   English   中英

我在Android模拟器中使用Appium-Eclipse-TestNG框架单击或点击项目时遇到问题

[英]I have an issue clicking or tapping an item using Appium-Eclipse-TestNG framework in android emulator

Appium的新功能,不胜感激

我的代码:

public void testmethod() {
    List<MobileElement> buttonlist = driver.findElements(By.xpath("//android.app.Dialog//android.view.View//android.widget.Button"));
    buttonlist.forEach(webElement -> log.info(webElement.getAttribute("name")));
    for (MobileElement button : buttonlist) {
        System.out.println(".................button name=>" + button.getAttribute("name") + "<");
        if ("Send Email ".equals(button.getAttribute("name"))) {
            driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
            button.click();
            break;
        }
    }

}

C#for loop打印列表中的所有项目,而使用Java则仅打印其中的一项。 难道我做错了什么? 我看到它迅速在android屏幕顶部单击并关闭,而没有单击实际元素。

您必须使用唯一的元素ID来访问按钮。 您可以使用idresource-idaccessibility idxpath访问该元素。

不推荐使用xpath

如果您的应用程序元素中没有唯一的ID,则可以要求开发人员将其放入他们的代码中。

您可以使用Appium Desktop Inspector来检查元素。 了解确切的元素后,可以单击按钮,如下所示:

MobileElement button= driver.findElementByAccessibilityId("your element's accessibility id");
button.click();
//or
MobileElement button= driver.findElementById("your element's id or resource id");
button.click();

您可以从appium桌面检查器获取或ID,资源ID或可访问性ID

如果要为按钮使用xpath,请从appium桌面检查器中获取它,并将其用作:

MobileElement button= driver.findElement(By.xpath("your element's xpath shown in appium"));
button.click();

我在您的代码中看到的问题很少。

首先,您不需要在for循环中调用隐式等待。 在初始化驱动程序且时间超过1分钟或更长时间后立即使用一次。

其次,您在if条件中添加了额外的空间 ,应为

if ("Send Email".contains (button.getAttribute("name"))) {
  button.click();
  break;
}

第三,更多是一个建议。 代替click ,使用类似AndroidTouchAction类的tap方法,

AndroidTouchAction touch = new AndroidTouchAction (driver);
touch.tap (TapOptions.tapOptions ()
  .withElement (ElementOption.element (e)))
  .perform ();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM