本主题解释如何在 SOAtest 和 Virtualize 中自定义 web 场景的等待条件。
本章包含:
了解等待条件
您可以自定义 SOAtest 和/或 Virtualize 在执行用户操作之后等待多长时间,以便进入当前场景步骤的验证/提取阶段,然后进入场景中的下一个步骤。
当用户与 web 页面交互时,web 页面将响应用户正在做的任何事情。例如,当用户单击链接时,页面将重新加载新内容。当用户选择菜单项时,页面的其他部分可能会刷新自己。用户本能地等待页面完成更新,然后继续使用页面。实际上,在大多数情况下,用户必须等待更新,以便获得页面元素。
在实现测试自动化时,必须配置此决策。测试工具必须等待足够长的时间,这样它就不会在页面准备好之前继续执行场景执行过程,但同时它还必须快速运行,以实现自动化速度的好处之一。
SOAtest 和 Virtualize 在记录时自动配置等待条件。对于每个 web 场景步骤,它们都会自动添加一个延迟,以等待下一个场景步骤中使用的元素。之所以这样做,是因为您不能让下一个 web 场景步骤单击链接,除非该链接首先出现在页面上。
如果一个操作导致在记录期间加载一个新页面,那么 SOAtest 和/或 Virtualize 将添加“等待页面加载”延迟。
如果在记录期间检测到没有导致页面加载的网络流量(例如,AJAX 请求),那么 SOAtest 和/或 Virtualize 会添加“等待没有 HTTP 流量的时间间隔”延迟,以便在回放期间给 web 应用程序足够的时间来发出适当的请求。
但是,您可能希望手动调整或修改等待条件,以便让场景按预期执行。在许多情况下,单个场景步骤将使用多个等待条件。
指定等待条件
在场景记录期间捕获的等待条件可以在场景步骤中 Wait Conditions 选项卡中查看和修改。可用的等待条件包括:
等待页面加载:此等待条件将等待至少一个页面加载完成。但是,它会等到所有的页面加载都在一秒钟内完成。一旦一秒钟过去了,没有任何新的页面加载开始,等待就完成了。页面加载既可以表示整个页面正在重新加载,也可以表示单个帧正在重新加载。如果 SOAtest/Virtualize 检测到页面加载发生在导致记录场景步骤的特定用户操作之后,以及在记录下一个步骤的用户操作之前,则在记录期间添加页面加载等待条件。
等待异步请求:此等待条件将等待至少一个异步请求发出并接收到它的响应。如果在第一个异步请求正在进行时启动了任何其他异步请求,那么它将等待所有异步请求完成。对于此等待条件,异步请求定义为在不发生页面加载时发出的请求,其响应基于文本。在导致该步骤被记录的用户操作之后,以及在记录下一个步骤的用户操作之前,如果在记录期间 SOAtest/Virtualize 检测到一个或多个异步请求发生,则添加异步请求等待条件到页面加载的上下文之外。
异步请求的等待条件在 9.7 版中被禁用
这意味着您不能添加新的场景,但是现有的场景将继续运行,直到您将关联的场景转换为 Selenium 格式。您可以将这些等待条件替换为“等待没有流量的间隔时间”等待条件。确保间隔足够长,以便发生异步请求。
- Wait for Element: 此等待条件将一直等到指定的页元素满足特定条件为止。
- Page Element: 页面元素可以通过两种方式指定:
- Element for next user action: 该选项通过查看场景中的下一步并使用在该步骤的 User Action 选项卡中配置的元素,自动确定要等待哪个元素。如果当前步骤是某个场景中的最后一步,则此等待条件将不执行等待。
- Element specified: 此选项允许您手动选择要等待的元素。可以使用 Element Properties、 XPath或 Script 来选择元素。
- Condition: 您可以设置以下元素条件进行等待:
- Present: 这个条件一直等到元素出现在页面上。元素可能对用户可见,也可能不可见。如果元素直到用户鼠标移到其他元素上才变得可见,那么这比下一个条件 Visible 更可取。这是用于记录时自动添加的元素等待的默认条件。
- Visible: 此条件将一直等到元素在页面上可见为止。
- Not visible: 此条件将一直等到元素不出现在页面上,或者出现在页面上但不可见为止。
- Editable: 此条件将等待输入元素可编辑。如果在非输入的元素上使用此条件,它最终将超时,因为非输入的元素根据定义是不可编辑的。
- Has value: 此条件将等到元素具有具有指定值的属性时才执行。属性可以是元素支持的任何属性,也可以是元素的文本内容的“text”。
在记录过程中添加一个元素等待条件(等待元素出现),作为所有测试或操作的除了那些添加了脚本对话框等待条件的测试或操作的最后一个等待条件。元素等待条件在以下情况下是不活动的(意味着它们不等待任何东西):
- 在当前场景步骤之后,该场景中没有任何步骤。
- 在当前场景步骤之后的场景中没有启用浏览器回放工具。
- 下一个浏览器回放工具在其用户操作中不使用页面元素。
下一个浏览器回放工具被配置为使用测试或操作套件逻辑。如果下一个步骤使用测试或操作套件逻辑,则不使用元素等待条件,因为该逻辑可能导致下一个步骤无法运行
- Page Element: 页面元素可以通过两种方式指定:
Wait for Script Dialog: 此等待条件一直等到检测到以下脚本对话框之一:警告框、确认框或提示框。在记录过程中添加脚本对话框等待条件,作为导致脚本对话框出现的所有测试或操作的最后等待条件。
- Wait for Specified Time: 此等待条件只是等待指定的毫秒数。此等待条件不会在记录期间自动添加。
Wait For Time Interval Without HTTP Traffic: 此等待条件将等待指定的秒数,直到浏览器和服务器之间没有任何通信。例如,如果指定的时间是 1 秒,那么当浏览器和服务器之间没有任何通信 1 秒时,它就完成等待。此等待条件仅在检测到异步请求并导致其他非异步请求发生的情况下,在记录期间与异步请求等待条件一起添加。
Wait For Time Interval Without HTTP Traffic was the default wait condition Prior to WebKing 6.0.5
此等待条件可用作请求等待时间和 UI 等待时间。单独的时间可以手动定制,但是默认的请求等待时间为 4000 ms,UI 等待时间为 100 ms。
除了手动从该选项卡添加新的等待条件外,还可以从浏览器内容查看器工具自动添加这些条件。
从浏览器内容视图器中添加等待条件
浏览器内容视图器允许您从呈现的 Web 页面的视图以图形方式指定等待条件。
若要从浏览器内容查看器中添加等待条件工具;
- 右键单击要为其指定等待条件的元素。
- 从快捷菜单菜单选择 Add Wait for Element 。
- 在 Add Wait Condition 对话框,指定新等待条件的详细信息,然后单击 OK。
添加的等待条件将自动配置为等待,直到出现已关闭的元素。
标识与等待条件关联的元素
作为等待条件源的元素将在浏览器内容查看器中以纯绿色边框突出显示。
配置等待条件的顺序
等待条件按执行顺序出现在 Wait execution 选项卡中。您可以通过单击 Wait Conditions 选项卡中合适的按钮对条件顺序进行添加、删除和修改。
等待条件的顺序非常重要!
无论其他任何等待条件成功或失败,等待条件都将按照它们出现的顺序执行。如果等待条件失败(意味着该条件在超时之前没有得到满足),那么将生成一条错误消息。例如,对于大多数 web 应用程序,页面加载通常发生在发出异步请求之前。因此,同时具有页面加载和异步请求的场景步骤的等待条件通常应该在异步请求等待条件之前出现页面加载等待条件。如果切换了条件的顺序,那么页面加载条件将失败,因为异步请求等待条件将等待任何页面加载之后发生的异步请求。然后执行页面加载等待条件。但是由于没有更多的页面加载,它最终会超时。
除了 Wait for Specified Time 条件外,每个等待条件都有超时。如果在超时内没有满足等待条件,则会报告一条错误消息,以便您知道如何调整等待条件。然而,即使等待条件失败,场景步骤也将继续。可以将超时设置为使用首选项中设置的默认超时,也可以为单个等待条件定制超时。