Есть ли лучший способ получить значение элемента с помощью Appium на Android? - PullRequest
0 голосов
/ 25 декабря 2018

Я пишу автоматизацию для Android-приложения Sam's Club с использованием Appium 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);

Это прекрасно работает, и я могу получить ценность таким образом, но мне кажется, что я делаю здесь кое-что излишнее.Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 25 декабря 2018

Либо вы можете попросить команду разработчиков добавить идентификатор автоматизации / cont-desc в цену

Или вы можете проверить элемент, используя Appium Desktop Inspector и посмотрите, есть ли у ценника конкретный идентификатор автоматизации / продолжение.

Если у вас есть продолжение в ценнике, то вы можете получить доступ к ценнику как:

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