## 涉及到JS组件的测试案例
> 在当前的软件开发中,web页面会经常使用一些JS组件,而这些组件由于是动态生成的,用一般的脚本测试会导致测试用例报错,所以Selenium中会提供一些特殊的脚本来处理这些问题。
> 此文档用于描述Selenium如何处理某些特殊场景。
## 案例二:下拉组件操作
下拉组件是一种模拟提示框的JS组件,常用的有数据表格和可定制下拉列表等。
本案例以客户归属区域为例,操作界面如下:
1. 表单页面呈现
![](https://box.kancloud.cn/2016-08-20_57b7ba4fe608d.png)
2. 单击文本框
![](https://box.kancloud.cn/2016-08-20_57b7ba500a99d.png)
3. 选择相应内容
![](https://box.kancloud.cn/2016-08-20_57b7ba5024d8e.png)
4. 组件回填字段信息
![](https://box.kancloud.cn/2016-08-20_57b7ba503b4af.png)
* * * * *
## 实现思路
首先可以看到点击文本框后,会弹出选择框;选择框的内容会自动初始化,所以我们需要等待框的内容初始化完成再进行选择;选择的事件是双击,所以这边用双击处理;双击完之后,回填相关的字段信息
* * * * *
## 用例脚本demo
| 命令(Command) | 目标(Target) | 值(Value) | 脚本说明 |
| -- | -- | -- | -- |
| ... | ... | ... | ... |
| click | id=AreaName | | 点击归属区域的文本框 |
| waitForElementPresent | //tr[@id='row10']/td[3]/div | | 等待行数据加载完成 |
| clickAt | //tr[@id='row10']/td[3]/div | | 单击选中行内容 |
| doubleClickAt | //tr[@id='row10']/td[3]/div | | 双击行触发组件的选择事件 |
| ... | ... | ... | ... |
**在编写这个脚本的时候,有些内容还不是很确定:**
1. click和clickAt的区别;
2. 为什么组件选择需要先用clickAt点击一次再使用doubleClickAt双击才能生效;
3. 确认表格初始化完成使用的绝对元素。
以上问题,只能后续深入理解后才能来解释了。