WebView 中 Android 的 Appium 上的 id 除外,定位器无法正常工作

Locator is not working except id on the Appium for Android in WebView

正在尝试测试 Android 在 WebView 中编码的应用程序。我有一个正在尝试自动化测试用例的应用程序。

我有一个包含电子邮件和密码的登录屏幕,其中确实有 ID 定位器。这工作正常我能够找到元素。用 ionic 制作的 ITs 混合应用程序。登录按钮没有 ID 定位器。

到目前为止我已经尝试过这个东西。

MobileWebBrowserFactory factory;
AndroidDriver<WebElement> appiumdriver;
WebElement LoginElement = appiumdriver.findElement(By.id("username"));
LoginElement.click();
LoginElement.sendKeys("Test");

WebElement PasswordElement = appiumdriver.findElement(By.id("password"));
PasswordElement.click();
PasswordElement.sendKeys("Test");
// Hide Keyboard
appiumdriver.hideKeyboard();
Thread.sleep(2000);

            WebElement LoginButton = appiumdriver
                    .findElementByName("end");

它给了我一个例外,即不允许定位器始终找到名称。 Android 和 appium 驱动我都用过。

任何人都可以向我推荐好的图书馆吗?感谢您的提前帮助。

谢谢

我很长时间没有使用 Appium,所以也许我错了,但我记得,Appium 仅支持通过 idxpath 定位元素。
所以,而不是 findElementByName 尝试 findElementByXpath.
定位器应该相应地改变,所以它会像

WebElement LoginButton = appiumdriver.findElementByXpath("//*[@name='end']");

我对代码做了一些修改。

将 Appium 服务器从 1.10 更改为 1.20.2。 使用 Android 个驱动程序实例。

此外,为非离子框架使用了 Xpath。

它解决了我的问题,我可以使用它找到元素。

        WebElement UsernameElement = appiumdriver.findElementByXPath("//*[@id=\"username\"]/input");
        Thread.sleep(1000);
        UsernameElement.click();
        Thread.sleep(1000);
        UsernameElement.sendKeys("mobile3@20212.com");

可能旧 Appium 无法识别该元素。