隐式等待和appWaitActivity在uiautomator2中不起作用

时间:2018-07-26 08:19:16

标签: java android automation appium uiautomator

在我添加其他功能(“ automationame”,“ uiautomator2”)之前,我的代码运行良好。但是,在我使用uiautomator2之后,impliallyWait无法正常工作。代码不等待元素出现。如果元素不存在,则自动化将很快关闭。从一个活动转移到另一活动时也发生了。谁能帮助我解决这个问题?

下面是我的设置代码:

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");
  }

1 个答案:

答案 0 :(得分:0)

ImplicitWait 不是元素等待的解决方案。如果无法立即找到元素,这是一种设置超时以拉出DOM的方法

使用明确等待来等待元素:

new WebDriverWait(driver,<timeoutInSeconds>)
             .until(ExpectedConditions.presenceOfElementLocated(<locator>));

注意: 在代码中,您设置了 appWaitDuration capability

  

用于等待appWaitActivity启动的超时时间(以毫秒为单位)   (默认为20000)

与元素无关,在我看来3秒还不够