定位器不起作用,除了 WebView 中 Appium for Android 上的 id
Posted
技术标签:
【中文标题】定位器不起作用,除了 WebView 中 Appium for Android 上的 id【英文标题】:Locator is not working except id on the Appium for Android in WebView 【发布时间】:2021-08-06 21:55:48 【问题描述】:尝试做在 WebView 中编码的 android 应用程序的测试。我有一个应用程序正在尝试自动化测试用例。
我有一个登录屏幕,其中包含有 ID 定位器的电子邮件和密码。这很好,我能够找到元素。使用 ionic 制作的 IT 混合应用程序。登录按钮没有 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 驱动程序。
任何人都可以为此向我推荐好的图书馆吗?提前感谢您的帮助。
谢谢
【问题讨论】:
登录按钮有类名吗? 不,它没有。它确实有 id 你是说登录按钮有id?但你的问题陈述说 - 登录按钮没有 id 定位器。 对不起,我的错,它没有 id 但它有一个名字。 【参考方案1】:我很长时间没有使用 Appium,所以也许我错了,但我记得,Appium 仅支持通过 id
或 xpath
定位元素。
所以,不要尝试findElementByName
,而是尝试findElementByXpath
。
定位器应该相应地改变,所以它会像
WebElement LoginButton = appiumdriver.findElementByXpath("//*[@name='end']");
【讨论】:
我试过它对我不起作用。我尝试了 Androiddriver 和 Appium 驱动程序。【参考方案2】:我对代码做了一些修改。
将 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 无法识别该元素。
【讨论】:
所以,最后你使用的是findElementByXPath
,而不是我建议的findElementByName
...至于升级 Appium 服务器,我认为这不是问题。
findElementByXPath 和 findElementByName 这是我尝试过的,但没有成功。当我重新安装只能工作的 Appium 时。我降级 appium 只是为了检查,它再次停止工作。所以它的 appium 驱动程序就是问题所在。
啊,好的。有趣的。谢谢!以上是关于定位器不起作用,除了 WebView 中 Appium for Android 上的 id的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio:地理定位不起作用。无法在 Webview 中获取地理位置
CoordinatorLayout 中 AppBarLayout 下面的 WebView 不起作用
navigator.permissions.query 在 android/ios webview 中不起作用