android - 如何在没有 Content-desc、资源 ID 或文本属性的情况下查找元素 xpath

标签 android selenium appium appium-android

使用 Appium,

我想点击下图中的一个(箭头)按钮。但该按钮没有资源 ID、内容描述或文本。那么,有什么方法可以让我们点击按钮。我正在使用 java 语言编写要运行的脚本。提前谢谢你:)

enter image description here

最佳答案

使用查找元素By.XPath:

//*[@class='android.widget.Button'][1]

以上是第一个android.widget.Button

如果页面中有多个android.widget.Button,您可以尝试改变[1]的顺序。

使用 java,您可以将它们收集在列表中并创建一个条件来确保是否有多个按钮:

List<MobileElement> buttons = driver.findElements(By.xpath("//*[@class='android.widget.Button']"));

MobileElement nextBtn;
MobileElement backBtn;
if(buttons.size()==1) {
    nextBtn = buttons.get(0);
}else {
    nextBtn = buttons.get(1);
    backBtn = buttons.get(0);
}

//if you want click
nextBtn.click();

注意:

不确定如何初始化driver,也可以将MobileElement 更改为AndroidElement

关于android - 如何在没有 Content-desc、资源 ID 或文本属性的情况下查找元素 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59171860/

相关文章:

appium - 如何在 appium 或 selenium 中测试时读取短信

android - SyncResult 字段用于同步之间的延迟

android - 带后退按钮的搜索 View

Android 已弃用 tabactivity,什么时候不再起作用

python - Selenium Phantomjs 浏览器在启动时挂起。我该如何调试它?

python - 通过 Selenium 和 Python 进行首页查询时 ChromeDriver 比 GeckoDriver 太慢

java - 在 Selenium 中处理 TAB

android - Appium getText() 返回 android :hint value from EditText?

java - 如何在不每次加载模拟器的情况下在 android 模拟器上运行测试?

android - 矩阵操作矩形的 HitTest