首页 > 解决方案 > 有没有更好的方法在 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);

它工作得很好,我可以通过这种方式获得价值,但感觉就像我在这里做的有些矫枉过正。有没有更好的方法来做到这一点?

标签: appiumappium-android

解决方案


您可以要求您的开发团队将自动化 id / cont-desc放在价格标签中,

或者您可以使用Appium Desktop Inspector检查元素并查看价格标签是否具有特定的自动化 id/cont-desc。

如果您在价格标签中有 cont-desc,那么您可以按以下方式访问价格标签:

MobileElement element= driver.findElementByAccessibilityId("automation id here");
System.Out.Println(element.getText());

推荐阅读