首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 JAWS 测试 Web 应用的技巧(1)

使用 JAWS 测试 Web 应用的技巧(1)

屏幕阅读器简介      屏幕阅读器(Screen Reader)是尝试识别理解当前屏幕上显示信息的一种软件应用,屏幕阅读器通过 Accessibility 的接口识别当前屏幕上的信息,通过文本转语音系统或者盲文的形式呈现给最终用户。读屏软件的用户一般为盲人,视障人士或者文盲。                   屏幕阅读器依赖于操作系统,大多数读屏软件都是特定与某个操作系统的。用户可以根据自己的需要选择适合自己的读屏软件。开源的有 Linux 系统下的读屏软件和适用于 Windows 系统下的 NVDA(NonVisual Desktop Access)。NVDA 目前支持二十多种语言,尤为突出的是支持直接从 USB 启动运行,可以不用安装,插上 USB 驱动就可运行,完全绿色。                    苹果系统上是 VoiceOver。最通用的两个读屏软件是 JAWS(Job Access with Speech)和 Window-Eyes。          早期的操作系统比如 MS-Dos 都是命令行界面,界面上的信息(文字)都可以直接映射到读屏软件的缓冲区里,通过键盘交互控制缓冲区内的光标位置,这样界面上的内容可以完全得被屏幕阅读器获取并输出给用户。          随着 GUI 界面的出现,情况变得原来越复杂。屏幕上有各种各样的图片,按钮,用户需要不断的输入信息,点击按钮进行交互。屏幕阅读器要想理解并且传递这些信息,就需要有一个幕后模型。通过从操作系统读取的消息建立一个幕后模型,并且能够在屏幕前和幕后来回切换,从而达到既可以传递屏幕信息又可以交互的目的。          操作系统的不断发展和 Web2.0 应用的出现,对屏幕阅读器的要求也越来越高。屏幕阅读器通过查询操作系统和当前的应用来识别当前屏幕上显示的信息,并且当显示信息更新时能够识别。比如,操作系统可以告诉屏幕阅读器当前的焦点在一个按钮上,这个按钮的内容时什么, 会触发什么样的操作。中间需要遵循的一个接口就是 Accessibility 接口。遵循这个接口,浏览器,操作系统,屏幕阅读器就可以通信了。          Web2.0 的应用有很多动态更新的内容,如何能使得屏幕阅读器识别这些动态内容,并且传递一些状态信息给用户,就需要 ARIA 的支持。          JAWS 从版本 10 对 ARIA 的支持就很好,目前的版本是 11,而 Window-Eyes 目前仍然不支持 ARIA。         
JAWS 的工作原理与模式                所有屏幕阅读器的工作原理都是类似的,为了能够读出并且跟页面的内容进行交互,屏幕阅读器会把当前页面的快照存储起来放在自己的一个虚拟缓冲区内 , 并且 JAWS 会有自己的一个光标在这个虚拟缓冲区内移动,当然用户是看不到这个光标的,只能通过 JAWS 读出来的内容来判断这个光标的位置,因此 JAWS 称其为虚拟光标。就是通过这个虚拟缓冲区才允许用户来控制页面的内容。如果没有这个虚拟缓冲区,读屏软件只能够访问能被 focus 到的元素,比如 input 或者 a 之类的,对于 span 或者 p 这样的元素内容则无法识别;没有这个虚拟缓冲区,用户也无法跟页面元素或者内容里面的子元素进行交互,诸如 image,list 和 table 一类的元素。屏幕阅读器都有类似的虚拟缓冲区,只不过所称呼的名字可能不同。在 JAWS 里面,虚拟缓冲区指的就是 virtual Pc cursor  mode,即 VPC。当用户打开 JAWS 浏览 HTML 文档时默认 VPC 模式是打开的,使用 INSERT+Z 就可以切换 VPC 模式。在默认模式下使用 INSERT+Z 可以听到 JAWS 提示“virtual cursor mode off”。使用 INSERT+ESC 可以刷新这个虚拟缓冲区。VPC 模式关闭有时也称为 form 模式                
         JAWS 目前有三种模式 virtual PC cursor mode 打开 , 关闭和自动模式。         JAWS 从版本 10 开始支持自动切换 VPC 的模式,在自动模式下,JAWS 会根据所设置的 role(ARIA 的属性)的值来自动决定 VPC 的模式是打开还是关闭:    role=application 要求 JAWS 处于交互的模式下,即关闭 VPC 模式。此时即使使用 INSERT+Z 去切换 VPC 的模式,我们听到的也只是“Virtual PC cursor mode off”,因为在这种情况下 JAWS 认为其他的模式(比如 VPC 打开的模式)是不适合的。    role=document 要求 JAWS 处于 VPC 打开的模式。 当然可能这种自动的切换模式有可能会有问题,偶尔 JAWS 的行为出现异常,我们需要手动的来切换一下 VPC 的模式。在打开关闭的过程中,虚拟缓冲区也得以更新。                                
JAWS 常用的快捷键          使用 JAWS 有一个必须谨记的要点,不要使用鼠标,鼠标会导致 JAWS 的虚拟缓冲区遭到破坏,从而使得 JAWS 读出来的信息不知所云。我们切身的想一下对于真正使用屏幕阅读器的用户来讲,使用鼠标也是不现实的。因此键盘操作就变得尤为重要,这也是我们在使用 JAWS 进行测试前必须保证我们的 Web 应用的所有操作都是支持键盘操作的。否则 JAWS 的测试则没有什么意义。          使用 JAWS 测试 Web 应用时有一些常用的快捷键,掌握好这些快捷键会使我们测试 Web 应用方便很多。         
          JAWS 的快捷键很多都是使用小键盘访问,很多跟读相关的功能都是通过这些键的组合来完成的。通常小键盘是用来输入数字的,当用来操作 JAWS 时,必须关闭这个输入数字的功能。JAWS 11 在打开的时候会自动关闭小键盘的数字功能。     
基本操作:
打开 JAWS 开始读屏,INSERT + Down Arrow Key 是读所有内容的命令,期间还可以使用向左向右的键在所有内容中向后或向前浏览,或者使用 Page UP 或 Page Down 来加快或减慢读的速度。CTRL 键打断 JAWS 的朗读。    CTRL+INSERT+DOWN Arrow 开始浏览阅读,即读每一段内容的第一部分,默认读每一段的第一行。当然也可以自己配置读哪些内容。通过 CTRL + SHIFT+INSERT+DOWN 键打开浏览阅读的配置框,可以选择读第一行,第一个句子或者其他更具体的配置。                 INSERT+DOWN 是读所有的内容,当 JAWS 正在浏览阅读时也可使用该键切换成读所有文档,或者反过来都是可以自由切换的。
JAWS 对 Web 应用的支持:
使用 JAWS 访问页面时,可以方便的访问页面的各部分的结构,表格(table), 列表(list), 标题(heading), 替换文字(Alt)都能够识别,所有这些内容都来自于 HTML 的信息,HTML4.0 考虑了 a11y 的实现, 再加上 ARIA 的支持, JAWS 对 Web2.0 应用的支持也是非常强大的。下面列举一些跟我们平时用来测试相关的常用的快捷键,其他的可以参考 JAWS 的使用手册。
  • INSERT + F7  在一个对话框中列出所有的链接。当 IMAGE 元素属于一个 link 时,JAWS 会提示这是一个图表链接。 对于图片元素,JAWS 不会从图片本身去读任何信息,而是会读图片的 alt 属性,当 alt 属性不存在时会读 title 属性。当然这都是可以配置的,默认 JAWS 只读存在 alt 或 title 的图片元素,如果存在 longdesc 属性,JAWS 会提示用户,通过 Enter 可以在新窗口打开包含这个详细描述的页面。不存在 alt 或 title 属性的则被当做装饰性的图片被 JAWS 忽略掉。
  • INSERT + F6 在一个对话框中列出所有的标题(heading ),这里指的是所有使用 h 标签的元素,这也告诉我们在编写 Web 应用的代码时,一定要用标准的有语义的 HTML 标签,比如这个标题就使用 h,不要用其他的元素再加上 CSS 使得其看起来是一个标题,实际 JAWS 却识别不出来这个标题。
  • INSERT + F5  在一个对话框中列出所有的 Form 元素; 对于 form 元素,JAWS 还提供很多方便访问的命令,比如列出所有可以编辑的文本框,列出所有的 button 等。当 JAWS 遇到 form 元素时会自动切换到 form 模式,提示用户与应用交互。
  • CTRL+INSERT+L 在一个对话框中列出所有的 list ,移动到下一个 list 里面的一项使用 L 键; 移动到 list 里面的前一个使用 SHIFT+L
  • CTRL+INSERT+T 在一个对话框中列出所有的 table。 关于 JAWS 读表格的内容,开始很多开发人员不知道 JAWS 可以读 table 里面每个表格里面的内容,所有可能会每个 cell 都设置成可以通过 Tab 获取焦点的元素,实际上 JAWS 是有命令来读各个表格内容的,开发人员不需要增加额外的工作。
    • CTRL+ALT+RIGHT ARROW 移动到后面一个 cell 并且读这个 cell 的内容
    • CTRL+ALT+LEFT ARROW 移动到前面一个 cell 并且读该 cell 的内容
    • CTRL+ALT+UP ARROW 移动到上面一个 cell 并且读这个 cell 的内容
    • CTRL+ALT+DOWN ARROW  移动到下面一个 cell 并且读该 cell 的内容
    • CTRL+ALT+HOME  移动到第一个 cell 并且读这个 cell 的内容
    • CTRL+ALT+END 移动到最后一个 cell 并且读这个 cell 的内容
返回列表