本主题解释了如何修改 web 场景模拟的用户操作。 本章包含: 若要查看和修改特定场景步骤进行的操作: 可以使用数据源对用户操作进行参数化。例如,要使类型操作遍历存储在 Excel 电子表格中的一组不同值。 作为用户操作源的元素,它将在场景步骤的预操作浏览内容选项卡中以纯蓝色边框突出显示。 若要快速更改用户操作目标,则右键单击 Pre-Action Browser Contents 选项卡中的相关元素,然后选择合适的 Modify 命令。 如果要更改的用户操作与特定元素之间没有关联(例如,“close”或“navigate”操作),则可右键单击 Pre-Action Browser Contents 选项卡汇总的任意位置,然后选择 Change User Action。 它将打开允许更改目标的 User Action 选项卡。 在创建和修改用户操作的页面元素时,您可能希望检查 HTML,以确定操作是否正在向合适的元素添加操作。 若要查看给定元素的 HTML,可以通过右键单击该元素,然后从快捷菜单选择 Inspect <Element> 。 可以通过从预设置操作列表中进行选择,然后根据需求自定义它们,以满足您的需要,进而配置最常见的用户操作。可用的预设置操作如下所述。 很多预设置用户操作的配置部分都包含 "Element Locator” 部分。该部分允许通过元素属性、XPath 或脚本来指定与操作相关联的元素。 Use Xpath 允许输入用作标识符的 XPath。 Use Script 允许输入指定所需用户操作的脚本。 Use Element Properties 允许通过以下控件指定属性: 同时,还需注意,很多操作允许配置 Window Name。这允许指定希望在其中执行操作的窗口的名称。保留该字段为空白表示使用默认窗口。 使用 Selenium,您可以通过将 Element Locator 设置为 Use XPath,然后将其中一个可用定位器前缀设置为所需值,以指定不同的专门化元素定位器。可用的前缀有: 例如,若要使用 CSS 定位器 如果在接受脚本对话框(Accept Script Dialog)、取消脚本对话框(Dismiss Script Dialog)或键入脚本对话框(Type into Script Dialog)之外的操作中打开三种类型的 JavaScript 弹出对话框(警告框、确认框和提示框)的其中一个,则将报告一个错误,除非您正在使用 Selenium 引擎,而这是您的场景中的最后一个测试。 如果在 Selenium 引擎的等待操作期间打开一个弹出框,则将不会报告错误。 只适用于 Selenium 此操作在三种类型的 JavaScript 弹出对话框(警告框、确认框和提示框)上按下 OK 按钮。 对于多选组合框,此操作将向选择项添加一个选项。这可以是第一个选择,也可以是一个额外的选择。若要选择多个项目,请多次使用此操作。 9.8 版本已弃用该选项,当前引擎没有记录。 此操作向提示框添加文本。此操作已弃用;使用接受脚本对话框、键入脚本对话框和取消脚本对话框代替。 配置说明: 9.8 版本已弃用该选项,当前引擎没有记录。 此操作验证警告框信息中的文本。此操作已弃用;使用接受脚本对话框、键入脚本对话框和取消脚本对话框代替。 配置说明: 9.8 版本已弃用该选项,当前引擎没有记录。 此操作验证确认框信息中的文本。此操作已弃用;使用接受脚本对话框、键入脚本对话框和取消脚本对话框代替。 配置说明: 9.8 版本已弃用该选项,当前引擎没有记录。 此操作验证提示框信息中的文本。此操作已弃用;使用接受脚本对话框、键入脚本对话框和取消脚本对话框代替。 配置说明: 此操作选中多选框。 9.8 版本已弃用该选项,当前引擎没有记录。 此操作按住确认框中的 Cancel 按钮。此操作已弃用;使用接受脚本对话框、键入脚本对话框和取消脚本对话框代替。 配置说明: 此操作单击指定的元素。 配置说明: 此操作关闭指定的窗口。 只适用于 Selenium 对于弹出框(警告框、确认框和提示框),此操作可以按 Cancel 按钮(用于确认和提示),也可以按 X(用于所有 3 种类型的警告框)。 此操作双击一个元素。 此操作将一个元素拖到另一个位置。 配置说明: 这有 4 种表示如何移动元素的方法。对于所有以下指示器,操作都从将被拖动的元素开始。所有的数字都是以像素为单位的。4 个选项包括: Start at offset and move by delta: offsetX,offsetY|deltaX,deltaY 从源元素的左上角开始拖动源元素 offsetX, offsetY,然后移动 moving deltaX, deltaY。负增量将元素向上向左移动。 只适用于 Selenium 此操作执行当前 web 页面内指定的 JavaScript。指定的 JavaScript 将在与元素定位器定义元素相同的框架中执行。如果没有定义任何元素,则 JavaScript 将在最上面的框架中执行。 若要配置该用户操作: 配置说明: 在 Element Locator 部分中指定的定位器将作为指定函数的第一个参数传递。例如,假定有 需要 0 个或 1 个参数。单击时,对话框应该显示类似“此脚本中需要 0 个或 1 个参数”这样的内容。当有一个参数时,该元素是由该用户操作中的元素定位器指定的元素。 示例 - 将鼠标悬停在元素上: 在执行 JavaScript 操作中输入以下代码: 注意,此代码执行元素上的“onMouseOver”事件。在大多数情况下,这将导致触发悬停行为。在某些情况下,这是不够的,并且需要更多的代码来触发悬停。 示例 - 单击隐藏元素: 在执行 JavaScript 操作中输入以下代码: 注意,此代码元素上的 click 函数。在大多数情况下,这将导致触发点击行为。在某些情况下,这是不够的,并且需要更多的代码来触发点击。 针对遗留 此操作将触发特定页面元素上的 JavaScript 事件。这包括了在页面代码中定义的 JavaScript 事件(对用户不可见)。 配置说明: 此操作按下浏览器的 Back 按钮。不需要任何参数。 此操作按下浏览器的 Forward 按钮。不需要任何参数。 针对遗留 这些操作触发元素上的 keydown, keypress, 或 keyup JavaScript 事件。 配置说明: 只适用于 Selenium 此操作将指定的浏览窗口最大化。 配置说明: 针对遗留 这些操作触发元素上的 mousedown, mouseover 或 mouseup JavaScript 事件。 配置说明: 此操作导航到所提供的 URL,就好像它是在浏览器的 URL 栏中输入的一样。 配置说明: 针对遗留 此操作将打开一个将在指定的开始 URL 处填充页面的新浏览器。 允许添加自定义操作。 此操作已按下 Refresh 按钮。 在多选组合框汇总,此操作从选择项中移除一个选项。这相当于在选定的组合框中单击 shift。 若要删除多个项目,请多次使用此操作。 只适用于 Selenium 此操作通过为 x 轴和 y 轴指定的像素数滚动 web 应用程序。负值表示“向左滚动”(针对 x 轴)或“向上滚动”(针对 y 轴)。 只适用于 Selenium 此操作将 web 应用程序滚动至指定的像素位置(x 轴和 y 轴)。 在单选组合框中,此操作选择组合框中的单选项。如果已经选中一个选项,则此操作将更改选择项。 配置说明: 此操作提交一个表单或表单内的一个元素到远程服务器。 配置说明: 此操作将指定的文本键入到指定的元素中。 此操作将指定的文本键入到指定的元素中 不需任何焦点。 此操作将文本输入到提示框中。 配置说明: 此操作将指定的文本键入到指定的元素中。文本将在字段中屏蔽,并在存储时加密。 Legacy Only 此操作将指定的文本键入到指定的元素中,不包含任何焦点。文本将在字段中屏蔽,并在存储时加密。 此操作取消选中/清除选中的复选框。 此操作模拟浏览器继续下一步骤之前等待的指定毫秒数。 可以使用以下特殊字符映射指定支持 Selenium 类型操作中的特殊字符。 Number pad keys Function keys 这些字符映射可以与如下列脚本的脚本化“文本输入”值一起使用,该脚本将键入单词“test”,然后发送 tab 键: 使用 SOAtest 9.9.2 及更早版本,可以添加可以从浏览器回放工具调用的自定义用户操作。这些操作仅应用于使用遗留引擎的执行浏览器场景。它们可以通过两种方式进行添加:通过在 UserCustomizableOptions.js 或在 BrowserDriver.js 中定义新函数。Parasoft 通常推荐在 UserCustomizableOptions.js 中定义自定义操作;但在某些情况下,建议使用 BrowserDriver.js,以便支持 Chrome。 这些函数将采用这种形式 其中 XXX 是自定义用户操作的名称。 例如,可以让 UserCustomizableOptions.js 定义一个操作,如下所示: 然后通过选择 Other 操作并在 从 SOAtest 9.9.3 开始,Firefox (由于新的 Firefox 扩展需求)不再支持像这样的添加自定义操作。对于遗留引擎和 Chrome 或 Internet Explorer 上的回放,仍然支持正确迁移的自定义用户操作。 若要迁移现有自定义操作: 例如,将上面的示例脚本更改为 注意, 配置操作
使用数据源参数化用户操作
有关如何添加并使用数据源参数化测试的更多详情,请查阅 使用数据源、变量或来自其他测试的值对测试进行参数化。标识与用户操作关联的元素
更改用户操作的目标
检查 HTML 中的元素
了解预设置操作
通用配置控件
指定专门的元素定位器(CSS, ALT 属性,等。)
tag.classA
,则使用 XPath 定位器 css=tag.classA
。弹出对话框错误
接受脚本对话框
Addselection
Answeronnextprompt
Assertalert
Assertconfirmation
Assertprompt
Check
Choosecancelonnextconfirmation
Click
Close
取消脚本对话框
Doubleclick
Dragdrop
执行 JavaScript
function userFunction(locator) {
locator.click();
}
。元素定位器中指定的该元素将作为此脚本中的定位器参数传递给函数,这样您就可以按照您的意愿去做。function hover(element) {
if(document.createEvent) {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent('mouseover', true, false);
element.dispatchEvent(evObj);
} else if(document.createEventObject) {
element.fireEvent('onmouseover');
}
}
function click(element) {
element.click();
}
Fireevent
后退
前进
Keydown / Keypress / Keyup
最大化窗口
Mousedown / Mouseover / Mouseup
导航
新浏览器
其他
刷新
Removeselection
Scroll By
Scroll To
Select
Submit
Type
仅键入(无需焦点)遗留内容
只在脚本对话框中键入 Selenium
键入密码
键入密码(无需焦点)
Uncheck
Wait
Special Character Mappings for Type Actions
NULL \uE000
CANCEL \uE001
HELP \uE002
BACK_SPACE \uE003
TAB \uE004
CLEAR \uE005
RETURN \uE006
ENTER \uE007
SHIFT \uE008
CONTROL \uE009
ALT \uE00A
PAUSE \uE00B
ESCAPE \uE00C
SPACE \uE00D
PAGE_UP \uE00E
PAGE_DOWN \uE00F
END \uE010
HOME \uE011
LEFT \uE012
UP \uE013
RIGHT \uE014
DOWN \uE015
INSERT \uE016
DELETE \uE017
SEMICOLON \uE018
EQUALS \uE019
NUMPAD0 \uE01A
NUMPAD1 \uE01B
NUMPAD2 \uE01C
NUMPAD3 \uE01D
NUMPAD4 \uE01E
NUMPAD5 \uE01F
NUMPAD6 \uE020
NUMPAD7 \uE021
NUMPAD8 \uE022
NUMPAD9 \uE023
MULTIPLY \uE024
ADD \uE025
SEPARATOR \uE026
SUBTRACT \uE027
DECIMAL \uE028
DIVIDE \uE029
F1 \uE031
F2 \uE032
F3 \uE033
F4 \uE034
F5 \uE035
F6 \uE036
F7 \uE037
F8 \uE038
F9 \uE039
F10 \uE03A
F11 \uE03B
F12 \uE03C
META \uE03D
ZENKAKU_HANKAKU \uE040
def typeTestThenTab() {
return "test\uE004";
}
注意,这不是一个关键的修饰符。例如,您无法通过发送控件字符然后执行点击事件执行“control-click”。发送字符模拟用户按下和释放相应的按钮。自定义操作 - 迁移说明
_wk_BrowserDriver.prototype.doXXX = function(locator) { ....
_wk_BrowserDriver.prototype.doContextMenu = function(locator) {
var element = this.findElement(locator);
_wk_HTMLUtil.triggerMouseEvent(element, 'contextmenu', true);
};
contextmenu
(仅限遗留引擎)键入,在 SOAtest 中引用此自定义操作。_wk_
开头的任何变量,则更改它们以引用 com.parasoft.extension
。换句话说,将 _wk_XXX
更改为 com.parasoft.extension.XXX
。com.parasoft.extension.BrowserDriver.prototype.doContextMenu = function(locator) {
var element = this.findElement(locator);
com.parasoft.extension.HTMLUtil.triggerMouseEvent(element, 'contextmenu', true);
}
wk_BrowserDrive
r 变成了 com.parasoft.extension.BrowserDriver
,和 _wk_HTMLUtil
变成了 com.parasoft.extension.HTMLUtil
。
Overview
Content Tools