Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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
Java 隐式Wait和appWaitActivity在uiautomator2中不工作_Java_Android_Automation_Appium_Android Uiautomator - Fatal编程技术网

Java 隐式Wait和appWaitActivity在uiautomator2中不工作

Java 隐式Wait和appWaitActivity在uiautomator2中不工作,java,android,automation,appium,android-uiautomator,Java,Android,Automation,Appium,Android Uiautomator,在我添加功能(“automationame”、“uiautomator2”)之前,我的代码运行良好。但是,在我使用uiautomator2之后,隐式wait不起作用。代码不会等待元素出现。如果这些元素不存在,自动化系统将很快关闭。它也发生在从一个活动移动到另一个活动的过程中。有人能帮我解决这个问题吗 下面是我的设置代码: public void setUp() { System.out.println("Creating session....."); String pa

在我添加功能(“automationame”、“uiautomator2”)之前,我的代码运行良好。但是,在我使用uiautomator2之后,隐式wait不起作用。代码不会等待元素出现。如果这些元素不存在,自动化系统将很快关闭。它也发生在从一个活动移动到另一个活动的过程中。有人能帮我解决这个问题吗

下面是我的设置代码:

public void setUp() {
      System.out.println("Creating session.....");
      String path = System.getProperty("user.dir");
      DesiredCapabilities cap = new DesiredCapabilities();
      cap.setCapability("platformName", "Android");
      cap.setCapability("platformVersion", "6.0.1");
      cap.setCapability("deviceName", "88929a3d");
      cap.setCapability("automationName", "uiautomator2");
      cap.setCapability("appPackage", "io.selendroid.testapp");
      cap.setCapability("appActivity", "HomeScreenActivity");
      cap.setCapability("appWaitActivity", "HomeScreenActivity, RegisterUserActivity");
      cap.setCapability("appWaitDuration", 3000);
      cap.setCapability("app", path + "//apk//selendroid.apk");
      try {
          driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), cap);
      } catch (MalformedURLException e) {
          e.printStackTrace();
      }

      driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
      System.out.println("Session is created successfully");
  }
公共作废设置(){
System.out.println(“创建会话…”);
字符串路径=System.getProperty(“user.dir”);
DesiredCapabilities=新DesiredCapabilities();
cap.setCapability(“平台名”、“安卓”);
上限设定能力(“平台版”、“6.0.1”);
第4章设置能力(“deviceName”、“88929a3d”);
cap.setCapability(“automationName”、“uiautomator2”);
cap.setCapability(“appPackage”、“io.selendroid.testapp”);
cap.setCapability(“appActivity”、“HomeCreenactivity”);
cap.setCapability(“appWaitActivity”、“HomeCreenactivity、RegisterUserActivity”);
上限设定能力(“appWaitDuration”,3000);
cap.setCapability(“app”,path+“//apk//selendroid.apk”);
试一试{
驱动程序=新的AndroidDriver(新的URL(“http://localhost:4723/wd/hub"(香港法例第六章),;
}捕获(格式错误){
e、 printStackTrace();
}
driver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
System.out.println(“会话创建成功”);
}

隐式等待不是元素等待的解决方案。这是一种在尝试查找元素时设置拉出DOM超时的方法。(如果元素不立即可用)

使用显式等待来等待元素:

newwebdriverwait(驱动程序,)

.直到(预期条件。元素存在位置())如果设置“Appium”而不是“uiautomator2”,会发生什么?根本不需要设置该功能。但是,您应该考虑将驱动程序声明更改为<代码> AndroidDriver < /代码>,并使用<代码>安卓元素>代码>对象,而不是代码中的<代码> WebListMe/Cuth>对象。@ PANKAJMISHRA将返回UIAutoRead而不使用UiAutoStudio2。anymore@BillHileman我已经试过了,不会有任何影响。我仍然能够找到所有的元素。这对我的案例没有影响,但我的问题是,如果我使用uiautomator而不是uiautomator 2,隐式Wait也可以工作。Appium将等待元素直到超时,并在元素出现后立即继续。我使用的是UiAutomator2和imlicit waiting。要获取案例后的Appium服务器日志、服务器版本和java客户端版本,请使用Appium版本1.8.1和java 1.8.1添加代码段和Appium服务器日志,以帮助理解您的问题