Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在TestNG(Appium,Android)中选择侧菜单按钮_Appium_Appium Android_Testng Eclipse - Fatal编程技术网

无法在TestNG(Appium,Android)中选择侧菜单按钮

无法在TestNG(Appium,Android)中选择侧菜单按钮,appium,appium-android,testng-eclipse,Appium,Appium Android,Testng Eclipse,我是新手,但就我所搜索的而言,没有一种通用的方式来单击应用程序的侧栏 我目前正在尝试测试Piazza申请(大学作业)。首先,菜单/列表项没有任何资源id,我尝试的方法对我不起作用。有人能告诉我如何选择侧栏上的按钮吗 所有评论的行都是我已经尝试过的在线解决方案 @BeforeSuite public void setupAppium() throws MalformedURLException { final String URL_STRING = "http://0.0.0

我是新手,但就我所搜索的而言,没有一种通用的方式来单击应用程序的侧栏

我目前正在尝试测试Piazza申请(大学作业)。首先,菜单/列表项没有任何资源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());
      }



}
@BeforeSuite
public void setupAppium()引发畸形的异常{
最终字符串URL_字符串=”http://0.0.0.0:4723/wd/hub";  
url=新url(url\u字符串);
能力=新的所需能力();
setCapability(MobileCapabilityType.DEVICE_NAME,“Android设备”);
setCapability(MobileCapabilityType.APP,“/Users/nomi/Desktop/piazza.apk”);
能力。设置能力(MobileCapabilityType.NO_RESET,true);
能力.setCapability(MobileCapabilityType.AUTOMATION_名称,“UiAutomator2”);
驱动程序=新的AndroidDriver(url、功能);
driver.resetApp();
}
@Test(enabled=true)public void logIn()引发InterruptedException{
driver.findElement(By.id(“com.piazza.android:id/Login\u editText\u email”)).sendKeys(“l154053@lhr.nu.edu.pk");
driver.findElement(By.id(“com.piazza.android:id/Login\u editText\u password”)).sendKeys(“viscabarca”);
driver.findElement(By.id(“com.piazza.android:id/Login\u button\u Login”)。单击();
}
@Test(enabled=true)public void getList()抛出InterruptedException{
//driver.findElementsByAccessibilityId(“打开导航抽屉”).get(0)。单击();
//driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
//findElement(By.xpath(“//*[@content desc='”+“Open drawer”+“]”),单击();
//driver.manage().timeout().wait(2);
//driver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
//driver.findElement(By.id(“com.piazza.android:id/AddClassMenu\u addButton”)。单击();
//List List=driver.findElements(By.id(“com.piazza.android:id/List”);
//list.get(0)。单击();
//System.out.print(list.size());
//List nameOfList=driver.findElements(By.id(“相对布局的id”);
List List=driver.findElements(By.id(“com.piazza.android:id/List”);
//list.get(0)。单击();
System.out.print(list.size());
}
}

get list函数中的list.size()返回在登录函数之前执行的size=0。我使用了depends-depen关键字,但它仍然返回0。此外,我不知道这个id正在获取什么列表。

因为元素中有内容描述,您可以使用findElementByAccessibilityId()访问元素

driver.findElementByAccessibilityId("Open Navigation drawer")click();

我建议您使用Appium桌面检查器,而不是uiautomatorviewer。它将向您显示元素的任何唯一id以及xpath。

由于元素中有content desc,您可以使用findElementByAccessibilityId()访问元素

driver.findElementByAccessibilityId("Open Navigation drawer")click();

我建议您使用Appium桌面检查器,而不是uiautomatorviewer。它将向您显示元素的任何唯一id以及xpath。

Nomii,欢迎使用SO。请您提供您从中获取打印屏幕的页面的详细信息,好吗?这将极大地帮助我们为您提供解决方案。Nomii,欢迎使用SO。请您提供您从中获取打印屏幕的页面的详细信息,好吗?这将极大地帮助我们为您提供解决方案。