22

以下链接提到我们可以通过提供 id 找到元素...但我无法找到它。

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/finding-elements.md

按“名称”查找(即文本、标签或开发人员生成的 ID,即元素的“accessibilityIdentifier”)

我尝试了以下代码:

WebElement el = driver.findElement(By.name("txtLogin"));

其中 txtLogin 是登录按钮的 ID

它给出了以下例外:

org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)

谁能解释一下在appium中找到元素的所有方法

4

6 回答 6

24

您可以使用以下元素 ID:-

包裹名字 :com.example.testap

元素 ID:txtLogin

编写以下代码 -

 driver.findElement(By.id("com.example.testapp:id/txtLogin")).sendKeys("abc");
于 2014-03-11T12:13:24.313 回答
6

这是使用 Appium 定位元素的最常用方法的 java 代码

//Find element by id and enter Hello in Text box.

    driver.findElementById("edit_name").sendKeys("Hello");
    //Find element by class name and enter Hello in Text box.

     driver.findElementByClassName("com.android.EditText").sendKeys("Hello");
    //Find element by xpath and enter Hello in Text box.

    driver.findElementByXPath("//cass[@value='Enter Name']").sendKeys("Hello");
    //Find element by link text and enter Hello in Text box.

    driver.findElementByLinkText("Enter Name").sendKeys("Hello");

如果您想了解更多在 appium 中为原生和 web 视图查找元素的方法,请访问此处

于 2016-11-21T07:16:16.320 回答
5

你也可以使用Xpath通过 id 找到,例如 在此处输入图像描述 这里元素有class="android.widget.Button"id="digit5"所以你可以找到像

xpath("//android.widget.Button[contains(@resource-id,'digit5')]")

当您想要应用多个条件时,Xpath 最有用,xpath("//android.widget.Button[contains(@resource-id,'digit5') and @text='5']") 您可以在http://www.software-testing-tutorials-automation.com/2015/10/ui-automator-viewer-get-android-app 上查看更多详细信息。 html

于 2016-08-25T14:11:28.000 回答
1

在 Appium 1.0 及以后的版本中,不推荐使用 findElementByTagName。

您必须将 findElementByClassName 与合格的类名一起使用。android中EditTextField和Button的代码如下:

findElements(By.className("android.widget.EditText"));

findElements(By.className("android.widget.Button"));

于 2014-05-09T09:34:22.870 回答
1

您可以使用 android uiautomatorviewer找到元素的 ID 。只需转到您的 SDK 工具文件夹 D:\Android\android-sdk\tools,在这里您可以找到 uiautomatorviewer。打开它并截取您的活动的屏幕截图并找到任何元素的 id、类、包。

在此处输入图像描述

于 2015-01-06T11:08:58.260 回答
1

低于 18 的 Android API 级别无法通过 id 获取元素。如果 id 存在,您能否在 uiautomatorviewer 中检查。如果不是,您可以获取 EditView 类型的所有元素并对其进行迭代以找到正确的字段以发送文本。

以这种方式使用它 -

public List<WebElement> getWebElementList(By by) {

        return driver.findElements(by);
    }

public void details() throws InterruptedException{

        List<WebElement> weList = null;
        weList = getWebElementList(By.tagName("android.widget.EditView"));
        for (WebElement we : weList) {
            if(we.getText().toLowerCase().contains("login")){
                we.sendkeys("Hello");
            }
        }           
    }

希望这可以帮助。

于 2014-04-03T12:09:31.573 回答