Appium - 查找元素不一致
Appium - Finding elements isn't consistent
我现在在 Appium 中为 Android 应用程序编写测试时遇到非常烦人的情况:
有时,某些元素(相同的 2 个元素)在每次测试中都找不到 运行。
这是我的测试代码:
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.id("com.*****.android.g******:id/passwordText"),"Code"));
MobileElement we = (MobileElement) driver.findElementById("com.******.android.*******:id/passwordText");
we.click();
we.sendKeys(password);
CodePage codePage = new CodePage(driver);
codePage.loginBtn.click();
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.id("com.*****.android.*******:id/action_done"), "FINISH"));
BaseTutorialPage btp = new BaseTutorialPage(driver);
btp.finishBtn.click();
在这里您可以看到 2 个有问题的字段:we(这是密码字段)和 finishbtn,这是另一个要点击的按钮。
我尝试在等待部分使用几个 Exepected 条件,但它们的行为都是一样的,有时有效,有时无效
这里我设置了上限:
File app = new File(f, "app-debug.apk");
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME,"test");
cap.setCapability("newCommandTimeout", 60 * 10);
cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
cap.setCapability("appWaitActivity", "com.*******.android.*****.registartion.LoginActivity");
AppiumDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
return driver;
我使用的版本:
Appium 1.7.2
java-client 5.0.4(也尝试了最新的 BETA)
对于任何寻求答案的人,我刚刚将 automationName 升级到 uiautomator2 并解决了问题。
我现在在 Appium 中为 Android 应用程序编写测试时遇到非常烦人的情况:
有时,某些元素(相同的 2 个元素)在每次测试中都找不到 运行。
这是我的测试代码:
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.id("com.*****.android.g******:id/passwordText"),"Code"));
MobileElement we = (MobileElement) driver.findElementById("com.******.android.*******:id/passwordText");
we.click();
we.sendKeys(password);
CodePage codePage = new CodePage(driver);
codePage.loginBtn.click();
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.id("com.*****.android.*******:id/action_done"), "FINISH"));
BaseTutorialPage btp = new BaseTutorialPage(driver);
btp.finishBtn.click();
在这里您可以看到 2 个有问题的字段:we(这是密码字段)和 finishbtn,这是另一个要点击的按钮。
我尝试在等待部分使用几个 Exepected 条件,但它们的行为都是一样的,有时有效,有时无效
这里我设置了上限:
File app = new File(f, "app-debug.apk");
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME,"test");
cap.setCapability("newCommandTimeout", 60 * 10);
cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
cap.setCapability("appWaitActivity", "com.*******.android.*****.registartion.LoginActivity");
AppiumDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
return driver;
我使用的版本:
Appium 1.7.2
java-client 5.0.4(也尝试了最新的 BETA)
对于任何寻求答案的人,我刚刚将 automationName 升级到 uiautomator2 并解决了问题。