![](/img/trans.png)
[英]Java code written in Eclipse did not run with TESTNG (trying to automate test using Eclipse and Appium for Android Emulator)
[英]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来访问按钮。 您可以使用id , resource-id , accessibility id和xpath访问该元素。
不推荐使用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.