当前位置: 首页 > 知识库问答 >
问题:

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

松亦
2023-03-14

我正在使用Appium Java客户端为Sam's Club Android应用程序编写自动化。

在项目详细信息屏幕上,有一个价格字段。我正在尝试获得价格价值。问题是没有该要素的案文。

我查看了页面源并搜索了一下,看看是否有一个价格值在任何地方--但它似乎不存在于页面源的任何地方。

    // 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);

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

共有1个答案

蒯胜泫
2023-03-14

您可以要求开发人员团队将automation ID/cont-desc添加到价格标签中,

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

如果在价格标签中有cont-desc,则可以通过以下方式访问价格标签:

MobileElement element= driver.findElementByAccessibilityId("automation id here");
System.Out.Println(element.getText());
 类似资料:
  • 例如,我的Android应用程序中有消息元素,所有这些元素都有一个名为“message_view”的资源ID。我想要的是仅使用Xpath获得带有这个资源ID的最后一条消息。我尝试使用,但它不起作用: 我知道我可以使用,然后使用。但我想了解如何仅使用Xpath来完成此操作。

  • 问题内容: 我有一个CSS3动画,需要单击才能重新启动。这是一个显示剩余时间的条形图。我正在使用scaleY(0)转换来创建效果。 现在,我需要通过将条恢复到scaleY(1)并重新将其转到scaleY(0)来重新启动动画。我第一次尝试设置scaleY(1)失败,因为要花费相同的15秒才能将其恢复到全长。即使我将持续时间更改为0.1秒,我也需要延迟或链接scaleY(0)的分配,以使补充条完成。对

  • 使用RxJava,我有一个源Observable,它发出许多项目,我希望这些项目与另一个发出相同类型的Observable相交。在研究了许多选项之后,似乎构建事物的最连贯的方式是: 这里的预期输出是,当我订阅结果的可观察时,我会发出12个项目。由于getMatches的契约,我需要缓冲结果。 从表面上看,这似乎是可行的,但它似乎不是最干净的方式。过滤器似乎不适用于此,因为出于性能原因,我无法对每个

  • 我在真实的设备上启动应用程序,登陆主屏幕,主屏幕元素没有被ANDROID设备中的appium识别。我试着点击右上角的帮助图标。 注意,在任何主屏幕元素上执行动作是间歇性的 //下面是Home page object screen的构造函数,它在我登录后被调用。 Appium日志:[MJSONWP(6FBDDB32)]调用AppiumDriver.findElements(),参数:[“id”,“c

  • 本文向大家介绍jQuery获得子元素个数的方法,包括了jQuery获得子元素个数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery获得子元素个数的方法。分享给大家供大家参考。具体分析如下: 希望本文所述对大家的jQuery程序设计有所帮助。

  • 问题内容: 我有一堆看起来像这样的列表: 我想交换元素如下: 列表的大小可能有所不同,但是它们将始终包含偶数个元素。 我对Python相当陌生,目前正在这样做: 我知道这不是真正的Pythonic,而是想使用更高效的工具。也许列表理解? 问题答案: 无需复杂的逻辑,只需通过切片和步骤重新排列列表即可: TLDR; 编辑带说明 我相信大多数观众已经熟悉列表切片和多重分配。如果您不这样做,我会尽力解释