无法 select TestNG 中的侧边菜单按钮(Appium,Android)
Unable to select the side menu button in TestNG (Appium, Android)
The red box contains the button i want to access using driver我是新手,但据我搜索,没有通用的方式来单击应用程序的侧边栏。
我目前正在尝试测试 Piazza 申请(用于大学作业)。首先,menu/list 项目没有任何 resource_id,我尝试过的方法对我不起作用。任何人都可以指导我选择侧边栏上出现的此类按钮
所有评论的行都是我已经尝试过的在线现有解决方案。
@BeforeSuite
public void setupAppium() throws MalformedURLException {
final String URL_STRING = "http://0.0.0.0:4723/wd/hub";
url = new URL(URL_STRING);
capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,"Android Device");
capabilities.setCapability(MobileCapabilityType.APP, "/Users/nomi/Desktop/piazza.apk");
capabilities.setCapability(MobileCapabilityType.NO_RESET, true);
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
driver = new AndroidDriver<MobileElement>(url, capabilities);
driver.resetApp();
}
@Test ( enabled=true) public void logIn() throws InterruptedException {
driver.findElement(By.id("com.piazza.android:id/Login_editText_email")).sendKeys("l154053@lhr.nu.edu.pk");
driver.findElement(By.id( "com.piazza.android:id/Login_editText_password")).sendKeys("viscabarca");
driver.findElement(By.id( "com.piazza.android:id/Login_button_login" )).click();
}
@Test (enabled=true) public void getList() throws InterruptedException {
//driver.findElementsByAccessibilityId("Open navigation drawer").get(0).click();
//driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//driver.findElement(By.xpath("//*[@content-desc='"+"Open drawer"+"']")).click();
// driver.manage().timeouts().wait(2);
// driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//driver.findElement(By.id( "com.piazza.android:id/AddClassMenu_addButton" )).click();
//List<MobileElement> list = driver.findElements(By.id("com.piazza.android:id/list"));
//list.get(0).click();
// System.out.print(list.size());
//List nameOfList = driver.findElements(By.id("id of relative layout"));
List<MobileElement> list = driver.findElements(By.id("com.piazza.android:id/list"));
//list.get(0).click();
System.out.print(list.size());
}
}
获取列表函数中的list.size() returns size=0 它在登录函数之前执行。我使用了 depends on 关键字,但它仍然是 returns 0。此外,我不知道这个 id 正在获取什么列表。
由于元素中有 content desc,您可以使用 findElementByAccessibilityId().
访问该元素
driver.findElementByAccessibilityId("Open Navigation drawer")click();
我建议您使用 Appium Desktop Inspector 而不是 uiautomatorviewer。它将向您显示元素的任何唯一 ID 以及 xpath。
The red box contains the button i want to access using driver我是新手,但据我搜索,没有通用的方式来单击应用程序的侧边栏。
我目前正在尝试测试 Piazza 申请(用于大学作业)。首先,menu/list 项目没有任何 resource_id,我尝试过的方法对我不起作用。任何人都可以指导我选择侧边栏上出现的此类按钮
所有评论的行都是我已经尝试过的在线现有解决方案。
@BeforeSuite
public void setupAppium() throws MalformedURLException {
final String URL_STRING = "http://0.0.0.0:4723/wd/hub";
url = new URL(URL_STRING);
capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,"Android Device");
capabilities.setCapability(MobileCapabilityType.APP, "/Users/nomi/Desktop/piazza.apk");
capabilities.setCapability(MobileCapabilityType.NO_RESET, true);
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
driver = new AndroidDriver<MobileElement>(url, capabilities);
driver.resetApp();
}
@Test ( enabled=true) public void logIn() throws InterruptedException {
driver.findElement(By.id("com.piazza.android:id/Login_editText_email")).sendKeys("l154053@lhr.nu.edu.pk");
driver.findElement(By.id( "com.piazza.android:id/Login_editText_password")).sendKeys("viscabarca");
driver.findElement(By.id( "com.piazza.android:id/Login_button_login" )).click();
}
@Test (enabled=true) public void getList() throws InterruptedException {
//driver.findElementsByAccessibilityId("Open navigation drawer").get(0).click();
//driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//driver.findElement(By.xpath("//*[@content-desc='"+"Open drawer"+"']")).click();
// driver.manage().timeouts().wait(2);
// driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//driver.findElement(By.id( "com.piazza.android:id/AddClassMenu_addButton" )).click();
//List<MobileElement> list = driver.findElements(By.id("com.piazza.android:id/list"));
//list.get(0).click();
// System.out.print(list.size());
//List nameOfList = driver.findElements(By.id("id of relative layout"));
List<MobileElement> list = driver.findElements(By.id("com.piazza.android:id/list"));
//list.get(0).click();
System.out.print(list.size());
}
}
获取列表函数中的list.size() returns size=0 它在登录函数之前执行。我使用了 depends on 关键字,但它仍然是 returns 0。此外,我不知道这个 id 正在获取什么列表。
由于元素中有 content desc,您可以使用 findElementByAccessibilityId().
访问该元素driver.findElementByAccessibilityId("Open Navigation drawer")click();
我建议您使用 Appium Desktop Inspector 而不是 uiautomatorviewer。它将向您显示元素的任何唯一 ID 以及 xpath。