在Android上使用Appium是否有更好的方法来获取元素价值?

时间:2018-12-25 07:33:20

标签: appium appium-android

我正在使用Sam's Club Android applicationAppium Java Client编写自动化程序。

在“项目详细信息”屏幕上,有一个价格字段。我试图获得价格价值。问题在于该元素没有文本。

Item Details Price

我翻阅了页面源,搜索是否在任何地方都有价格值-但似乎在页面源中的任何地方都不存在。

我最终要做的是获取该元素的屏幕快照,并通过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);

它的效果很好,我可以通过这种方式获得价值,但感觉就像我在这里做些矫kill过正。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以要求开发人员团队在价格标签中放入自动化ID / cont-desc

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

如果价格标签中包含cont-desc,则可以按以下方式访问价格标签:

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