在我添加其他功能(“ 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");
}
答案 0 :(得分:0)
ImplicitWait 不是元素等待的解决方案。如果无法立即找到元素,这是一种设置超时以拉出DOM的方法。
使用明确等待来等待元素:
new WebDriverWait(driver,<timeoutInSeconds>)
.until(ExpectedConditions.presenceOfElementLocated(<locator>));
注意: 在代码中,您设置了 appWaitDuration capability
用于等待appWaitActivity启动的超时时间(以毫秒为单位) (默认为20000)
与元素无关,在我看来3秒还不够