## 涉及到JS组件的测试案例
> 在当前的软件开发中,web页面会经常使用一些JS组件,而这些组件由于是动态生成的,用一般的脚本测试会导致测试用例报错,所以Selenium中会提供一些特殊的脚本来处理这些问题。
> 此文档用于描述Selenium如何处理某些特殊场景。
## 案例一:弹窗组件操作
弹窗组件是一种模拟弹出窗的JS组件,本案例以人员选择功能为例,表单中需要从组织机构中选择对应的人员信息,操作界面如下:
1. 表单页面呈现
![](https://box.kancloud.cn/2016-08-20_57b7ba4f862f8.png)
2. 双击文本框,弹出选择窗口
![](https://box.kancloud.cn/2016-08-20_57b7ba4f9f9ae.png)
3. 搜索人员,确认选择
![](https://box.kancloud.cn/2016-08-20_57b7ba4fb7c27.png)
4. 组件回填,操作完成
![](https://box.kancloud.cn/2016-08-20_57b7ba4fce7bd.png)
* * * * *
## 用例脚本demo
| 命令(Command) | 目标(Target) | 值(Value) | 脚本说明 |
| -- | -- | -- | -- |
| ... | ... | ... | ... |
| doubleClick | id=customer_sellMan | | 双击报销人员文本框 |
| waitForElementPresent | css=div.window_title_text | 人员选择 | 等待**人员选择**窗口加载完成 |
| selectFrame | //iframe[@class='window_frame no-draggable no-resizable '] | | 切换人员选择所在区域 |
| waitForText | css=td.form_text_right > div | 选中人员 | 等待**人员选择**窗口内部区域加载完成 |
| type | id=searchVal | ADMIN | 搜索栏中输入**ADMIN** |
| click | id=searchButton | | 点击搜索按钮 |
| click | id=deptTree_4_check | | 点击搜索出来的人员信息 |
| click | id=confirmButton | | 点击确认按钮 |
| selectFrame | relative=top | | 切换主页面所在区域 |
| ... | ... | ... | ... |
> 以上脚本中,带双斜杠的并非注释,而是Selenium的XPath语法。