# Hypium框架中的BY.XPath指令为何获取不到控件

#### 问题现象

在使用DevEco Testing Hypium框架时，通过BY.xpath来点击详情按钮，报错控件获取失败。代码如下：

问题代码示例参考如下：

```
component = driver.touch(BY.xpath("/root/Navigation/NavBar/NavBarContent/NavRouter/Stack/Column/List/ListItem[5]/Column/Column/Row/Row[2]/SymbolGlyph"))
```

工程组件结构如下：

#### 背景知识

*   API使用方法：
    *   控件查看：可使用DevEco Testing Hypium插件中的UiViewer工具查看控件的各种属性。
    *   控件查找：Hypium中的定位操作目标的方式主要分三大类型，包括控件属性定位，图片匹配定位以及比例坐标定位。根据操作目标的定位准确性，首选方式为控件属性定位，次选图片匹配定位。当无法使用前两类方式定位时，可以选择比例坐标定位操作目标。其中控件属性定位通过BY选择器对象来实现。
*   BY.xpath使用要点：
    
    XPath不能和其他匹配器一起使用，且通过XPath查找控件相对较慢。
    

#### 问题定位

从图中能够看到脚本里混用了BY.type和BY.xpath匹配器，违反了XPath选择器的使用限制。

#### 分析结论

测试脚本里BY.xpath与BY.type匹配器混用导致BY.xpath匹配器失效。

#### 修改建议

将测试脚本里的BY选择器都统一为BY.xpath或者将脚本中的BY.xpath换成其他的BY选择器。