Appium驱动程序不等待识别混合应用程序中的元素并超时。然后测试失败。这是我的java代码来测试混合app.Here我使用了TestNG框架。首先,我切换到应用程序的Web上下文并进行显式等待直到元素可见。
@BeforeMethod
public void Setup() throws MalformedURLException
{
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
cap.setCapability(MobileCapabilityType.APP_PACKAGE, "com.example.touch");
cap.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.example.touch.MainActivity");
driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), cap);
}
@Test
public void LoginTest() {
java.util.Set<String> contextNames = driver.getContextHandles();
for (String contextName : contextNames) {
if (contextName.contains("WEBVIEW")){
driver.context(contextName);
}
}
try {
System.out.println("uy");
Thread.sleep(10000);
} catch (InterruptedException e) {
}
WebDriverWait wait;
wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.visibilityOf(driver.findElementByXPath("*[@id='login-page']####")));
driver.findElementByXPath("//*[@id='login-page']####").sendKeys("abc");
driver.findElementByXPath("//*[@id='login-page']####").sendKeys("xyz");
driver.findElementByXPath("//*[@id='login-button']####").click();
}
@AfterMethod
public void End() {
driver.quit();
}
这是我在运行TestNG测试后从appium服务器获得的错误消息。
info:[debug] [BOOTSTRAP] [debug]使用带有contextId的XPATH查找* [@ id ='login-page'] / div [1] / div [5] / div / input:multiple:false info:[debug] [BOOTSTRAP] [debug]返回结果:{“status”:7,“value”:“找不到使用提供的策略的元素。”} info:[debug] 1527ms后未满足条件。计时。 info:[debug]响应客户端错误:{“status”:7,“value”:{“message”:“使用给定的搜索参数无法在页面上找到元素。”,“origValue”:“无法使用提供的策略找到元素。“},”sessionId“:”51df32dc-3fdf-4b84-95f2-dd020590b861“} info:&lt; - POST / wd / hub / session / 51df32dc-3fdf-4b84-95f2-dd020590b861 / element 500 1527.819 ms - 230 信息: - &gt; DELETE / wd / hub / session / 51df32dc-3fdf-4b84-95f2-dd020590b861 {}