FindElement和FindElements命令

接下来要做的是与应用程序的不同元素进行交互,因此需要在交互之前首先定位元素。定位元素可以在AndroidDriver 实例本身上完成,因为它为我们提供了“ Find Element ”和“ Find Elements ”方法来定位Appium上的元素。在本章中,我们将学习如何使用FindElementFindElements命令或如何使用具有不同属性的Appium UiAutomatorViewer / Appium Inspector定位元素。

 

如何在Appium中使用FindElement和FindElements方法

Find ElementFind Elements方法之间的区别是第一个返回WebElement对象,否则它会抛出异常而后者返回WebElements列表,如果没有DOM元素与查询匹配,它可以返回一个空列表。在查找方法采取定位器调用或查询对象通过。“ 按”策略列在下面。

 

按名字

这也是定位元素的有效方法,但问题与UI开发人员在页面上具有非唯一名称或自动生成名称的ID相同。使用此策略,将返回名称属性值与位置匹配的第一个元素。如果没有元素具有匹配的name属性,则将引发NoSuchElementException 

示例1:如果给出的元素如下:

UIAutomatorViewer_2_2

可以使用以下命令定位上述元素:

 

1

2

3

driver.findElement(By.name("Shop byDepartment")).click();

//or

driver.findElementByName("Shop byDepartment").click();

 

示例2:如果给出的元素如下:
UIAutomatorViewer_4

可以使用以下命令定位上述元素:

 

1

2

WebElement element = driver.findElement(By.name("Home"));

element.click();

 

如何在Appium中使用' content-desc '属性查找元素?

content-desc属性可以与 findElementByName的text 属性完全一样使用看下面的例子:

示例3:如果给出的元素如下:

UIAutomatorViewer_5

可以使用以下命令定位上述元素:

 

1

driver.findElementByName("Sign inHello. Link").click();

 

按类名

有了这个,你可以根据class属性的值找到元素。如果一个元素有很多类,那么这将匹配它们中的每一个。一个类可以包含许多元素。

示例:如果给出的元素如下:
UIAutomatorViewer_3

可以使用以下命令定位上述元素:

 

1

2

3

4

 

driver.findElementByClassName("android.widget.ImageView").click();

//or

driver.findElement(By.className("android.widget.ImageView")).click();

注意:只有当这是一个唯一的类名时才能有效地工作,这在Appium中通常不是这种情况。但是我们仍然可以将 className与其他结合使用,我们将在下面给出一个详细的例子。

 

按ID

使用此策略,将返回id属性值与位置匹配的第一个元素。如果没有元素具有匹配的id属性,则将引发NoSuchElementException 。这是定位元素的最有效和首选方式,因为大多数时间ID都是唯一的。

示例:如果给出的元素如下:

UIAutomatorViewer_2

可以使用以下命令定位上述元素:

 

1

2

3

4

5

6

WebElement element

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值