[android][appium] 如何点击没有资源 ID 的元素?
[android][appium] how to click on element with no resource-id?
我不知道如何点击登录元素(来自 UI Automator):
请记住,UI 中有多个索引为 0 的 TextView。我能否以某种方式使用其文本 ("Sign in") 或其独特的 ListView/TextView 路径?
我不知道你运行使用的Android是什么版本,但是你可以做的是
1) 可以尝试添加内容描述到XML元素搜索一下
2)可以按你说的文字搜索,比如搜索名字("Sign in").
3) 可以使用XPath访问。
我建议设置 Appium Ruby Console,这样您就可以实时测试命令并查看最适合您的命令。
在本机 android 自动化中,我做了类似的事情,
onData(anything())
.inRoot(withDecorView(not(is(getActivity().getWindow().getDecorView()))))
.atPosition(0).atPosition(1)
.perform(click()); //this click item in droplist within droplist
或
onView(findChildof(withId(R.id.parent_id), 3)).check(matches((isDisplayed()))).perform(click()); //this clicks third child
有两种方法可以做到:
首先,试试这个:
driver.findElementByName("SignIn").click();
其次,试试这个:
public void tap(int index){
List<WebElement> li = driver.findElementByClass("PUT YOUR class name");
li.get(0).click();
}
试试这个,应该有用。
driver.findElement(By.xpath("//android.widget.TextView[@index='0']")).click();
试试这个:
driver.findElement(By.xpath("//*[@class='android.widget.TextView' and @index='0']")).click();
或
driver.findElement(By.name("Sign In")).click();
理想情况下两者都应该有效。
您可以使用 class 名称和文字进行点击。
无需为此构建自定义 xpath。
List<WebElement> elements = driver.findElements(By.className("class"));
For(WebElement element:elements)
{
if(element.geText().equals("textProperty"))
{
element.click();
}
}
我不知道如何点击登录元素(来自 UI Automator):
请记住,UI 中有多个索引为 0 的 TextView。我能否以某种方式使用其文本 ("Sign in") 或其独特的 ListView/TextView 路径?
我不知道你运行使用的Android是什么版本,但是你可以做的是
1) 可以尝试添加内容描述到XML元素搜索一下
2)可以按你说的文字搜索,比如搜索名字("Sign in").
3) 可以使用XPath访问。
我建议设置 Appium Ruby Console,这样您就可以实时测试命令并查看最适合您的命令。
在本机 android 自动化中,我做了类似的事情,
onData(anything())
.inRoot(withDecorView(not(is(getActivity().getWindow().getDecorView()))))
.atPosition(0).atPosition(1)
.perform(click()); //this click item in droplist within droplist
或
onView(findChildof(withId(R.id.parent_id), 3)).check(matches((isDisplayed()))).perform(click()); //this clicks third child
有两种方法可以做到:
首先,试试这个:
driver.findElementByName("SignIn").click();
其次,试试这个:
public void tap(int index){
List<WebElement> li = driver.findElementByClass("PUT YOUR class name");
li.get(0).click();
}
试试这个,应该有用。
driver.findElement(By.xpath("//android.widget.TextView[@index='0']")).click();
试试这个:
driver.findElement(By.xpath("//*[@class='android.widget.TextView' and @index='0']")).click();
或
driver.findElement(By.name("Sign In")).click();
理想情况下两者都应该有效。
您可以使用 class 名称和文字进行点击。 无需为此构建自定义 xpath。
List<WebElement> elements = driver.findElements(By.className("class"));
For(WebElement element:elements)
{
if(element.geText().equals("textProperty"))
{
element.click();
}
}