以下链接提到我们可以通过给出id来找到元素...但我无法找到它。
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/finding-elements.md
按“名称”查找(即文本,标签或开发人员生成的ID a.k.a'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中找到元素的所有方法
答案 0 :(得分:21)
您可以使用以下元素ID: -
包名:com.example.testap
元素ID:txtLogin
编写以下代码 -
driver.findElement(By.id("com.example.testapp:id/txtLogin")).sendKeys("abc");
答案 1 :(得分:4)
你也可以使用 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
答案 2 :(得分:2)
这是jave代码,其中包含使用Appium
定位元素的最常用方法//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中查找原生和网络视图元素的方法VISIT HERE
答案 3 :(得分:1)
如果Android API级别低于18,则无法通过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");
}
}
}
希望这有帮助。
答案 4 :(得分:1)
在Appium 1.0版以后,不推荐使用findElementByTagName。
您必须使用findElementByClassName而不是限定类名。 android中EditTextField和Button的代码如下:
findElements(By.className( “android.widget.EditText”));
findElements(By.className( “android.widget.Button”));
答案 5 :(得分:1)
您可以使用android uiautomatorviewer 找到元素的ID。 只需转到SDK工具文件夹D:\ Android \ android-sdk \ tools,在这里你可以找到uiautomatorviewer。 打开它并拍摄活动的屏幕截图,找到任何元素的id,class,package。