资源说明:vaadin的中文资料很少,在网上找了很久,发现了这本书,与大家分享一下。打开的时候请选择正确的编码(UTF-8)。大概目录如下:
前言
I. 简介
1. 简介
1.1. 概述
1.2. 示例程序一瞥
1.3. 对 Eclipse IDE 的支持
1.4. Vaadin 的目标与哲学
1.5. 背景
2. 开始使用 Vaadin
2.1. 概述
2.2. 设置开发环境
2.2.1. 安装 Java SDK
2.2.2. 安装 Eclipse IDE
2.2.3. 安装 Apache Tomcat
2.2.4. Firefox 和 Firebug
2.3. Vaadin 库概述
2.4. 安装 Vaadin Plugin for Eclipse
2.4.1. 安装 IvyDE Plugin
2.4.2. 安装 Vaadin Plugin
2.4.3. 更新插件
2.4.4. 更新 Vaadin 库
2.5. 使用 Eclipse 创建和运行一个工程
2.5.1. 创建工程
2.5.2. 浏览一下工程结构
2.5.3. 针对 Eclipse 的编码提示
2.5.4. 配置和启动 Web 服务器
2.5.5. 运行和调试
2.6. 通过 Maven 使用 Vaadin
2.6.1. 通过命令行使用 Maven
2.6.2. 编译和运行应用程序
2.6.3. 使用插件和定制 Widget 群
2.7. 使用 NetBeans IDE 创建工程
2.7.1. 使用 Vaadin Archetype 的Maven 工程
2.8. 使用 IntelliJ IDEA 创建工程
2.8.1. 配置应用程序服务器
2.8.2. 创建 Vaadin Web 应用程序工程
2.8.3. 创建 Maven 工程
2.9. Vaadin 安装包
2.9.1. 包中的内容
2.9.2. 安装库文件
2.10. 在 Scala 中使用 Vaadin
3. 架构
3.1. 概述
3.2. 技术背景
3.2.1. HTML 和 JavaScript
3.2.2. 使用 CSS 和 Sass 控制样式
3.2.3. AJAX
3.2.4. Google Web Toolkit
3.2.5. Java Servlet
3.3. 客户端引擎
3.4. 事件和监听器
II. Server-Side Framework
4. 编写服务器端 Web 应用程序
4.1. 概述
4.2. 构建 UI
4.2.1. 应用程序架构
4.2.2. 组合组件
4.2.3. 视图导航
4.2.4. 访问 UI, Page, Session, 以及 Service
4.3. 使用监听器来处理事件
4.3.1. 使用常规类来实现监听器
4.3.2. 区分事件的发生源
4.3.3. 简单方法: 使用匿名类
4.4. 图片及其他资源
4.4.1. 资源接口和类
4.4.2. 文件资源
4.4.3. Class Loader 资源
4.4.4. Theme 资源
4.4.5. 流资源
4.5. 错误处理
4.5.1. 错误指示器和消息
4.5.2. 自定义系统消息
4.5.3. 管理未被 catch 的例外
4.6. 通知
4.6.1. 通知类型
4.6.2. 定制通知
4.6.3. 使用 CSS 来控制样式
4.7. 应用程序的生命周期
4.7.1. 发布
4.7.2. Vaadin Servlet, Portlet, 和 Service
4.7.3. 用户 Session
4.7.4. 装载 UI
4.7.5. UI 过期
4.7.6. Session 过期
4.7.7. 关闭 Session
4.8. 发布应用程序
4.8.1. 在 Eclipse 中创建发布用的 WAR 文件
4.8.2. Web 应用程序内容
4.8.3. Web Servlet 类
4.8.4. 使用部署描述文件 web.xml
4.8.5. Servlet 与 URL 模式的映射
4.8.6. Servlet 的其他配置参数
4.8.7. 发布配置
5. UI 组件
5.1. 概述
5.2. 接口和抽象类
5.2.1. Component 组件
5.2.2. AbstractComponent
5.3. 组件的共通功能
5.3.1. 标题
5.3.2. 描述信息和提示信息
5.3.3. 激活与禁用
5.3.4. 图标
5.3.5. 语言环境(Locale)
5.3.6. 只读
5.3.7. 样式名称
5.3.8. 可见和隐藏
5.3.9. 控制组件的尺寸
5.3.10. 管理输入焦点
5.4. Field 组件
5.4.1. Field 接口
5.4.2. 数据绑定和数据转换
5.4.3. 处理 Field 值的变更
5.4.4. Field 值的缓存
5.4.5. Field 值校验
5.5. 组件的扩展
5.6. Label
5.6.1. 内容模式
5.6.2. 用 Label 来控制空白
5.6.3. CSS 样式规则
5.7. Link
5.8. TextField
5.8.1. 数据绑定
5.8.2. 字符串长度
5.8.3. 处理 Null 值
5.8.4. 文本变更事件
5.8.5. CSS 样式规则
5.9. TextArea
5.10. PasswordField
5.11. RichTextArea
5.12. 使用 DateField 输入日期和时间
5.12.1. PopupDateField
5.12.2. InlineDateField
5.12.3. 时间粒度
5.12.4. DateField 的本地化
5.13. Button
5.14. CheckBox
5.15. 选择组件
5.15.1. 将选择组件绑定到数据
5.15.2. ComboBox
5.15.3. ListSelect
5.15.4. 原生的选择组件 NativeSelect
5.15.5. 使用 OptionGroup 实现 RadioButton 组和 Check Box 组
5.15.6. 双列选择组件 TwinColSelect
5.15.7. 允许添加新项目
5.15.8. 复数选择
5.15.9. 其他共通特性
5.16. Table
5.16.1. 在 Table 内选择项目
5.16.2. Table 的功能
5.16.3. 在 Table 内编辑数据值
5.16.4. 列头和列脚
5.16.5. 动态生成的列
5.16.6. 列的格式控制
5.16.7. CSS 样式规则
5.17. Tree
5.18. MenuBar
5.19. 内嵌资源
5.19.1. 内嵌的 Image
5.19.2. Adobe Flash 动画
5.19.3. BrowserFrame
5.19.4. 通用的 Embedded 对象
5.20. Upload
5.21. ProgressBar
5.22. Slider
5.23. Calendar
5.23.1. 日期范围与显示模式
5.23.2. 日历中的事件
5.23.3. 从容器得到事件
5.23.4. 实现 Event Provider
5.23.5. 控制日历的样式
5.23.6. 可见的小时和日
5.23.7. 拖放
5.23.8. 使用上下文菜单
5.23.9. 本地化与格式化
5.23.10. 定制日历
5.23.11. 日期的前方和后方跳转
5.23.12. 处理日期的点击
5.23.13. 处理周的点击
5.23.14. 处理事件的点击
5.23.15. 事件的拖动
5.23.16. 处理拖动式选择(Drag Selection)
5.23.17. 变更事件的长度
5.24. 使用 CustomComponent 创造复合组件
5.25. 使用 CustomField 组合 Field 组件
6. 布局管理
6.1. 概述
6.2. UI, Window, 以及 Panel 内容
6.3. VerticalLayout 和 HorizontalLayout
6.3.1. 在有顺序的布局中控制组件间隔
6.3.2. 控制布局内组件的尺寸
6.4. GridLayout
6.4.1. 调整单元格尺寸
6.5. FormLayout
6.6. Panel
6.6.1. 滚动 Panel 的内容
6.7. 子窗口
6.7.1. 打开和关闭子窗口
6.7.2. 窗口位置
6.7.3. 滚动窗口内容
6.7.4. 模态子窗口
6.8. HorizontalSplitPanel 和 VerticalSplitPanel
6.9. TabSheet
6.9.1. 添加 Tab
6.9.2. Tab 对象
6.9.3. Tab 切换事件
6.9.4. 允许关闭 Tab, 处理 Tab 的关闭事件
6.10. Accordion
6.11. AbsoluteLayout
6.12. CssLayout
6.12.1. CSS 注入
6.12.2. 浏览器兼容性
6.13. Layout Formatting
6.13.1. 布局的尺寸
6.13.2. 组件的扩张
6.13.3. 布局单元格的对齐
6.13.4. 布局单元格的间隔空白
6.13.5. 布局的余白
6.14. 自定义布局
7. 在 Eclipse 中进行可视化的 UI 设计
7.1. 概述
7.2. 创建新的复合组件
7.3. 使用可视化编辑器
7.3.1. 添加新组件
7.3.2. 设置组件属性
7.3.3. 编辑 AbsoluteLayout
7.4. 可视化可编辑组件的结构
7.4.1. 子组件的引用
7.4.2. 子组件构建方法
7.4.3. 构造函数
8. Themes
8.1. 概述
8.2. 层级样式表(CSS, Cascading Style Sheets)简介
8.2.1. 将 CSS 应用于 HTML
8.2.2. 基本的 CSS 规则
8.2.3. 使用元素的 class 进行匹配
8.2.4. 使用元素的层级关系进行匹配
8.2.5. 层级的重要性
8.2.6. Vaadin UI 的样式类层级
8.2.7. 关于兼容性的注意事项
8.3. 优良语法样式表(Sass, Syntactically Awesome Stylesheets)
8.3.1. Sass 概述
8.3.2. Vaadin 中的 Sass
8.3.3. 编译 Sass Theme
8.4. Theme 的创建和使用
8.4.1. Sass Theme
8.4.2. 旧式 CSS Theme
8.4.3. 控制标准组件的样式
8.4.4. 内建 Theme
8.4.5. Add-on 的 Theme
8.5. 在 Eclipse 中创建 Theme
8.6. Valo Theme
8.6.1. 基本使用
8.6.2. 共通设定
8.6.3. Valo 的字体
8.6.4. 组件样式控制
8.6.5. Theme 优化
8.7. 自定义字体
8.7.1. 装载字体
8.7.2. 使用自定义字体
8.8. 条件式 Theme
9. 组件与数据绑定
9.1. 概述
9.2. 属性(Property)
9.2.1. 属性的查看器和编辑器
9.2.2. ObjectProperty 实现
9.2.3. 在属性类型与表达之间转换
9.2.4. 实现 Property 接口
9.3. 在项目(Item)中保存属性(Property)
9.3.1. PropertysetItem 实现
9.3.2. 使用 BeanItem 包装一个 Bean
9.4. 通过 Field 与项目的绑定来创建 Form
9.4.1. 简易绑定
9.4.2. 使用 FieldFactory 创建并绑定 Field
9.4.3. 绑定成员 Field
9.4.4. Form 的缓冲
9.4.5. 将 Field 绑定到 Bean
9.4.6. Bean 的校验
9.5. 在容器(Container)中保存项目(Item)
9.5.1. 容器的基本使用
9.5.2. 容器的下级接口
9.5.3. IndexedContainer
9.5.4. BeanContainer
9.5.5. BeanItemContainer
9.5.6. 在容器内遍历
9.5.7. Filterable 容器
10. Vaadin SQLContainer
10.1. 架构
10.2. SQLContainer 入门
10.2.1. 创建连接池
10.2.2. 创建查询代理 TableQuery
10.2.3. 创建容器
10.3. 过滤与排序
10.3.1. 过滤
10.3.2. 排序
10.4. 编辑
10.4.1. 添加项目
10.4.2. 取得数据库生成的row key
10.4.3. 对版本控制列的要求
10.4.4. 自动 Commit 模式
10.4.5. 更新状态
10.5. 缓存, 分页和刷新
10.5.1. 容器大小
10.5.2. 分页长度与缓存大小
10.5.3. 刷新容器
10.5.4. 缓存 Flush 通知机制
10.6. 刷新其他 SQLContainer
10.7. 使用 FreeformQuery 和 FreeformStatementDelegate
10.8. Vaadin Container 接口的未实现方法
10.9. 已知的问题与限制事项
11. Web 应用程序开发的高级问题
11.1. 管理浏览器窗口
11.1.1. 打开弹出式窗口
11.2. 在 Web 页面中嵌入 UI
11.2.1. 在 div 元素内嵌入 UI
11.2.2. 嵌入到 iframe 元素中
11.2.3. 使用 Vaadin XS Add-on 实现跨站嵌入
11.3. Debug 模式和 Debug 窗口
11.3.1. 打开 Debug 模式
11.3.2. 打开 Debug 窗口
11.3.3. Debug 日志
11.3.4. 一般信息
11.3.5. 查看组件层级关系
11.3.6. 通信 Log
11.3.7. Debug 模式
11.4. 请求处理器(Request Handler)
11.5. 快捷键
11.5.1. 默认按钮的快捷键
11.5.2. 控制 Field 的焦点快捷键
11.5.3. 通用的快捷键 Action
11.5.4. 对键码(Key Code)和修饰键(Modifier Key)的支持
11.6. 打印
11.6.1. 打印浏览器窗口
11.6.2. 打开打印窗口
11.6.3. 打印 PDF
11.7. 与 Google App Engine 的集成
11.8. 共通的安全问题
11.8.1. 处理用户输入内容, 防止跨站脚本攻击
11.9. 应用程序内的导航跳转
11.9.1. 导航设置
11.9.2. 实现 View
11.9.3. 处理 URI 片段路径
11.10. 应用程序高级架构
11.10.1. 分层架构
11.10.2. 模型(Model)-视图(View)-展现者(Presenter) 模式
11.11. 管理 URI 片段
11.11.1. 设置 URI 片段
11.11.2. 读取 URI 片段
11.11.3. 监听 URI 片段的变更
11.11.4. 支持 Web 爬虫
11.12. 拖放
11.12.1. 处理拖放
11.12.2. 拖放项目到 Tree 上
11.12.3. 拖放项目到 Table 上
11.12.4. 接受拖放
11.12.5. 拖动组件
11.12.6. 拖动到组件上
11.12.7. 从浏览器之外拖放文件
11.13. 日志
11.14. 与 JavaScript 集成
11.14.1. 调用 JavaScript
11.14.2. 处理 JavaScript 函数的回调
11.15. 访问 Session 全局数据
11.15.1. 传递对象引用
11.15.2. 覆盖 attach() 方法
11.15.3. ThreadLocal 模式
11.16. 服务器端 PUSH
11.16.1. 安装 PUSH 功能
11.16.2. 对一个 UI 允许 PUSH 功能
11.16.3. 在其他线程中访问 UI
11.16.4. 向其他用户发送广播
11.17. 字体图标
11.17.1. 装载图标字体
11.17.2. 基本使用方法
11.17.3. 在 HTML 中使用字体图标
11.17.4. 在其他文本中使用字体图标
11.17.5. 自定义字体图标
12. Portal Integration
12.1. 概述
12.2. 在 Eclipse 中创建 Portlet 工程
12.3. Portlet UI
12.4. 部署 Portal
12.4.1. Portlet 部署描述符
12.4.2. Liferay Portlet 描述符
12.4.3. Liferay Display 描述符
12.4.4. Liferay Plugin Package Properties 文件
12.4.5. 使用单一的 Widget 群
12.4.6. 构建 WAR 包文件
12.4.7. 部署 WAR 包文件
12.5. 在 Liferay 内安装 Vaadin
12.5.1. 删除 Liferay 自带的 Vaadin
12.5.2. 安装 Vaadin
12.6. 处理 Portlet 请求
12.7. 处理 Portlet 模式变更
12.8. 非 Vaadin Portlet 模式
12.9. Liferay 的 Vaadin IPC add-on
12.9.1. 安装 Add-on
12.9.2. 基本的通信功能
12.9.3. 注意事项
12.9.4. 使用 Session 属性进行通信
12.9.5. 数据的序列化和编码
12.9.6. 与非 Vaadin Portlet 通信
III. 客户端框架
13. 客户端 Vaadin 开发
13.1. 概述
13.2. 安装客户端开发环境
13.3. 客户端模块描述文件
13.3.1. 指定样式表
13.3.2. 限定编译目标
13.4. 编译客户端模块
13.4.1. Vaadin 编译器概述
13.4.2. 在 Eclipse 环境中编译
13.4.3. 使用 Ant 编译
13.4.4. 使用 Maven 编译
13.5. 创建自定义 Widget
13.5.1. 一个简单的 Widget
13.5.2. 使用 Widget
13.6. 调试客户端代码
13.6.1. 启动开发模式
13.6.2. 启动超级开发模式
14. 客户端应用程序
14.1. 概述
14.2. 客户端模块的 Entry-Point
14.2.1. 模块描述文件
14.3. 编译和运行客户端应用程序
14.4. 装载客户端应用程序
15. 客户端 Widget
15.1. 概述
15.2. GWT Widget
15.3. Vaadin Widget
16. 与客户端集成
16.1. 概述
16.2. 使用 Eclipse 简化工作
16.2.1. 创建 Widget
16.2.2. 编译 Widget Set
16.3. 创建服务器端组件
16.3.1. 基本的服务器端组件
16.4. 使用连接器实现客户端与服务器端的集成
16.4.1. 一个基本的连接器
16.4.2. 与服务器端通信
16.5. 状态信息共享
16.5.1. 在服务器端访问共享的状态信息
16.5.2. 在连接器中管理共享的状态信息
16.5.3. 使用 @OnStateChange 处理属性状态的变更
16.5.4. 将状态属性转发给 Widget
16.5.5. 在共享的状态信息中参照组件
16.5.6. 共享资源
16.6. 客户端与服务器端之间的 RPC 调用
16.6.1. 对服务器端的 RPC 调用
16.7. 组件与 UI 扩展
16.7.1. 服务器端扩展 API
16.7.2. 扩展的连接器
16.8. Widget 的样式控制
16.8.1. 确定 CSS 样式类
16.8.2. 默认的样式表文件
16.9. 组件容器
16.10. 客户端的一些高级问题
16.10.1. 客户端处理的各个阶段
16.11. 创建 Add-on
16.11.1. 在 Eclipse 中导出 Add-on
16.11.2. 使用 Ant 构建 Add-on
16.12. 从 Vaadin 6 迁移
16.12.1. 快速(而且肮脏)地迁移
16.13. JavaScript 组件与扩展的集成
16.13.1. JavaScript 库示例
16.13.2. 供 JavaScript 组件使用的服务器端 API
16.13.3. 定义一个 JavaScript 连接器
16.13.4. 从 JavaScript 到服务器端的 RPC 调用
IV. Vaadin Add-ons
17. 使用 Vaadin Add-on
17.1. 概述
17.2. 通过 Vaadin Directory 下载 Add-on
17.2.1. 使用 Ant 脚本编译 Widget Set
17.3. 在 Eclipse 中使用 Ivy 安装 Add-on
17.4. 在 Maven 工程中使用 Add-on
17.4.1. 添加依赖
17.4.2. 编译工程的 Widget Set
17.4.3. 启动 Widget Set 编译功能
17.5. 问题诊断
18. Vaadin Charts
18.1. 概述
18.2. 安装 Vaadin Charts
18.3. 基本使用
18.3.1. 显示多个数据序列
18.3.2. 混合类型图表
18.3.3. 图表 Theme
18.4. 图表类型
18.4.1. 折线图(Line Chart)与曲线图(Spline Chart)
18.4.2. 面积图(Area Chart)
18.4.3. 柱形图(Column Chart)与条形图(Bar Chart)
18.4.4. 错误条(Error Bar)
18.4.5. 箱形图(Box Plot Chart)
18.4.6. 散点图(Scatter Chart)
18.4.7. 气泡图(Bubble Chart)
18.4.8. 饼图(Pie Chart)
18.4.9. 仪表图(Gauge Chart)
18.4.10. 区域范围图(Area Range Chart)与列范围图(Column Range Chart)
18.4.11. 极坐标图(Polar Chart), 风玫瑰图(Wind Rose Chart), 与蜘蛛网图(Spiderweb Chart)
18.4.12. 漏斗图(Funnel Chart)
18.4.13. 瀑布图(Waterfall Chart)
18.5. Chart 配置
18.5.1. 绘图选项(Plot Option)
18.5.2. 坐标轴
18.5.3. 图例
18.6. 图表数据
18.6.1. List 数据序列
18.6.2. 一般数据序列
18.6.3. 范围数据序列
18.6.4. 容器数据序列
18.7. 高级使用
18.7.1. 服务器端描绘与导出
18.8. 时间线
18.8.1. 图像类型
18.8.2. 用户操作元素
18.8.3. 事件标记
18.8.4. 效率
18.8.5. 对数据源的要求
18.8.6. 事件与监听器
18.8.7. 可配置性
18.8.8. 本地化
18.8.9. 时间线图表的教程
19. Vaadin JPAContainer
19.1. 概述
19.2. 安装
19.2.1. 下载安装包
19.2.2. 安装包的内容
19.2.3. 使用 Maven 下载
19.2.4. 将库添加到你的工程中
19.2.5. 持久化配置
19.2.6. 故障诊断
19.3. 定义业务数据模型(Domain Model)
19.3.1. 持久化元数据
19.4. JPAContainer 的基本使用
19.4.1. 使用 JPAContainerFactory 创建 JPAContainer
19.4.2. 创建和访问实体
19.4.3. 嵌套属性
19.4.4. 层级数据容器
19.5. 实体提供者(Entity Provider)
19.5.1. 内建的 Entity Provider
19.5.2. 在 JEE6 环境中使用 JNDI Entity Provider
19.5.3. EJB 形式的 Entity Provider
19.6. 在 JPAContainer 中过滤
19.7. 使用 Criteria API 进行查询
19.7.1. 对查询进行过滤
19.7.2. 兼容性
19.8. Form 的自动生成
19.8.1. 配置 Field Factory
19.8.2. 使用 Field Factory
19.8.3. 主-从(Master-Detail)数据编辑器
19.9. JPAContainer 与 Hibernate 的结合使用
19.9.1. 延迟装载(Lazy loading)
19.9.2. 每个请求一个实体管理器(EntityManager-Per-Request)模式
19.9.3. Hibernate 与 EclipseLink 中的表连接(Join)对比
20. 使用 TouchKit 创建移动设备应用程序
20.1. 概述
20.2. 针对移动设备浏览器应当考虑的问题
20.2.1. 移动设备的人机界面
20.2.2. 带宽与性能
20.2.3. 移动设备的功能特性
20.2.4. 兼容性
20.3. 安装 Vaadin TouchKit
20.3.1. 以 Ivy 依赖项方式安装
20.3.2. 使用 Zip 包安装
20.3.3. 声明 Maven 依赖项
20.4. 导入 Vornitologist 示例程序
20.5. 创建新的 TouchKit 工程
20.5.1. 使用 Maven Archetype
20.5.2. 从新的 Eclipse 工程开始创建 TouchKit 工程
20.6. TouchKit 应用程序的组成元素
20.6.1. Servlet 类
20.6.2. 使用 web.xml 部署描述文件定义 Servlet 和 UI
20.6.3. TouchKit 设定
20.6.4. UI
20.6.5. 移动设备 Widget Set
20.6.6. 移动设备 Theme
20.7. 移动设备 UI 组件
20.7.1. NavigationView
20.7.2. Toolbar
20.7.3. NavigationManager
20.7.4. NavigationButton
20.7.5. Popover
20.7.6. SwipeView
20.7.7. Switch
20.7.8. VerticalComponentGroup
20.7.9. HorizontalButtonGroup
20.7.10. TabBarView
20.7.11. EmailField
20.7.12. NumberField
20.7.13. UrlField
20.8. 移动设备高级特性
20.8.1. 提供一个备用(Fallback)UI
20.8.2. 地理位置
20.8.3. 在本地存储中保存数据
20.8.4. 上传内容
20.9. 离线模式(Offline Mode)
20.9.1. 启用缓存配置(Cache Manifest)
20.9.2. 启用离线模式
20.9.3. 离线模式下的 UI
20.9.4. 向服务器发送数据
20.9.5. 离线模式下的 Theme
20.10. 构建最优化的 Widget Set
20.10.1. 生成 Widget Map
20.10.2. 定义 Widget 的装载方式
20.10.3. 应用自定义的 Widget Map Generator
20.10.4. 部署
20.11. 在移动设备上测试和调试
20.11.1. 调试
21. Vaadin TestBench
21.1. 概述
21.2. 安装 Vaadin TestBench
21.2.1. 测试程序开发环境
21.2.2. 分布式测试环境
21.2.3. 安装包的内容
21.2.4. 示例内容
21.2.5. 安装浏览器驱动程序
21.2.6. 测试节点的配置
21.3. 应用程序测试前的准备
21.4. 开发 JUnit 测试程序
21.4.1. 测试用例(Test Case) 的基本结构
21.4.2. 在 Eclipse 中运行 JUnit 测试程序
21.5. 创建 Test Case
21.5.1. 测试的启动
21.5.2. 测试用例(Test Case) 的基本结构
21.5.3. Web Driver 的创建和关闭
21.6. 查询页面元素
21.6.1. 使用 Debug 窗口生成查询
21.6.2. 使用组件类型($)查询页面元素
21.6.3. 非递归的组件查询 ($$)
21.6.4. 页面元素类
21.6.5. ElementQuery 对象
21.6.6. 查询结束元素
21.7. 元素选择器
21.7.1. 选择器的健壮性
21.7.2. 通过 ID 查找
21.7.3. 通过 Vaadin 选择器查找
21.7.4. 通过 CSS 类查找
21.8. 特殊的测试功能
21.8.1. 等待 Vaadin 处理完毕
21.8.2. 测试提示信息(Tooltip)
21.8.3. 滚动
21.8.4. 测试通知信息
21.8.5. 测试上下文菜单
21.8.6. 测量测试程序的执行时间
21.9. 创建可维护的测试程序
21.9.1. 页面对象模式(Page Object Pattern)
21.10. 屏幕截图的取得和比较
21.10.1. 屏幕截图参数
21.10.2. 测试失败时取得屏幕截图
21.10.3. 取得用于比较的屏幕截图
21.10.4. 处理屏幕截图时的一些实际经验
21.10.5. 已知的兼容性问题
21.11. 运行测试
21.11.1. 使用 Ant 运行测试
21.11.2. 使用 Maven 运行测试
21.12. 在分布式环境中运行测试
21.12.1. 远程运行测试
21.12.2. 启动 Hub
21.12.3. 测试节点的服务配置
21.12.4. 启动一个测试网格节点
21.12.5. 移动设备测试
21.13. 无头(Headless)测试
21.13.1. 运行无头测试所需要的基本设置
21.13.2. 在分布式环境中运行无头测试
21.14. 已知的问题
21.14.1. 测试 LoginForm
21.14.2. 使用 assertTextPresent 和 assertTextNotPresent 方法
21.14.3. Upload 组件的导出记录
21.14.4. 在 Mac OS X 上运行 Firefox 测试程序
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。