【问题标题】:Appium is unable to find button on android deviceAppium 无法在 android 设备上找到按钮
【发布时间】:2020-05-05 23:10:35
【问题描述】:

以下是我尝试单击的按钮的 html 代码。

 <Button rounded style={styles.pickBtn} title="get started" onPress={signIn} testID="completeBoarding">
            <Text style={styles.pickBtnText}>GET STARTED</Text>
          </Button>

这是我试图用来单击所述按钮的代码。

String xPath = "//button[normalize-space()='GET STARTED']";
    AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30).until(
            ExpectedConditions.elementToBeClickable(MobileBy.xpath(xPath)));
    searchElement.click();

-

AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30).until(
            ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("get started")));
    searchElement.click();

-

AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30).until(
            ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("GET STARTED")));
    searchElement.click();

从上面提供的 html 中,单击按钮的正确方法是什么?我尝试的上述方法都没有成功运行。每个都失败,并显示一条错误消息,指出找不到该元素。

【问题讨论】:

  • 这是移动网络应用程序?错误是什么?
  • 不是网络应用程序。本机应用程序。 @Muzzamil
  • 我的意思是它是本机应用程序或 Web 视图,因为 html 永远不会用于本机应用程序。本机应用程序和混合应用程序的 Xpath 语法已更改,所以我想知道这一点
  • 错误通常都是一样的,一个例子是“使用可访问性id值开始⇒使用给定的搜索参数无法在页面上找到一个元素。” @Muzzamil
  • @Muzzamil 我发布的 html 来自 react.js 文件。如果这能让事情更清楚..

标签: java android selenium appium-android browserstack


【解决方案1】:

请尝试使用以下代码点击。

String xPath = "//*[@title='get started']";
    AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30).until(
            ExpectedConditions.elementToBeClickable(MobileBy.xpath(xPath)));
    searchElement.click();

使用文字点按:

您可以将textUiAutomator2 一起使用 如果您使用 appium 作为自动化引擎,请添加所需的功能 UiAutomator2

capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");

然后使用这个函数

public void TapByText(String buttonText) {
        String buttonName="new UiSelector().text(\"MY_TEXT\")".replace("MY_TEXT", buttonText);
        @SuppressWarnings("unchecked")
        List<WebElement> el = (List<WebElement>) driver.findElements(MobileBy.AndroidUIAutomator(buttonName));
        System.out.println(el.size());
        new TouchAction(driver).press(ElementOption.element(el.get(0))).waitAction().release().perform();

    }

【讨论】:

  • 我仍然收到错误消息,提示找不到此类元素。 prnt.sc/qqezxwprnt.sc/qqf03p
  • 标题是“开始”,但按钮上的文字是“开始”。我都试过了,都不管用。我目前正在尝试设置 uiautomatorviewer,但遇到错误“-Djava.ext.dirs=/Users/user_name/Library/Android/sdk/tools/lib/x86_64:/Users/user_name/Library/Android不支持 /sdk/tools/lib。请改用 -classpath。"
  • 我将添加一个使用文本点击的功能
  • 我已经更新了答案并提到了如何使用 uiAutomator2 作为自动化引擎。
  • 成功了!谢谢你,兄弟。我将尝试修复 uiautomatorviewer 错误,看看是否可以将其用于其余测试。它看起来对未来的测试非常有价值。
猜你喜欢
  • 1970-01-01
  • 2014-01-04
  • 2020-11-17
  • 2018-12-12
  • 2022-11-08
  • 2018-11-17
  • 2022-11-04
  • 2017-04-20
  • 1970-01-01
相关资源
最近更新 更多