appium - 有没有更好的方法在 Android 上使用 Appium 来获取元素值?
问题描述
我正在使用Appium Java Client为Sam's Club Android 应用程序编写自动化程序。
在项目详细信息屏幕上,有一个价格字段。我试图获得价格价值。问题是该元素没有文本。
我查看了页面源代码并搜索是否有任何地方的价格值 - 但它似乎没有出现在页面源代码的任何地方。
我最终做的是对该元素进行截图并通过Tess4j运行该小截图图像。
// find element
AndroidElement el = (AndroidElement) driver.findElement(By.id("com.rfi.sams.android:id/item_details_price"));
// do a screenshot of the element
File imageFile = el.getScreenshotAs(OutputType.FILE);
// use Tessaract to recognize the number from image
ITesseract instance = new Tesseract();
instance.setDatapath("C:\\Program Files (x86)\\Tesseract-OCR\\tessdata");
instance.setTessVariable("tessedit_char_whitelist", "0123456789");
String ocrResult = instance.doOCR(imageFile);
它工作得很好,我可以通过这种方式获得价值,但感觉就像我在这里做的有些矫枉过正。有没有更好的方法来做到这一点?
解决方案
您可以要求您的开发团队将自动化 id / cont-desc放在价格标签中,
或者您可以使用Appium Desktop Inspector检查元素并查看价格标签是否具有特定的自动化 id/cont-desc。
如果您在价格标签中有 cont-desc,那么您可以按以下方式访问价格标签:
MobileElement element= driver.findElementByAccessibilityId("automation id here");
System.Out.Println(element.getText());
推荐阅读
- java - 如何在 java 中创建或配置 Filehandler 以在不同的执行中对我的日志进行逻辑处理?
- r - 如何根据 R 中的最小日期差异为每个 ID 仅选择一行数据?
- powerbi - 根据同一表的另一列获取特定列的计数 - Power BI
- openvino - 问:如何获取 dldt buildinfo?
- django - 在 React 前端显示 rtsp 流
- excel - 宏按钮将文件移动到另一个文件夹
- node.js - 如何在构建模板时修复离子错误
- javascript - 如何以数组中的对象为条件在 Json 表单中使用规则?
- google-cloud-platform - 从 Google Cloud 内部 IP 调用 Google Cloud 存储桶
- blender - Blender:没有对象附加纹理