choose
类: matlab.uitest.TestCase
命名空间: matlab.uitest
对 UI 组件执行选择手势
语法
说明
choose( 在不需要其他信息的 UI 组件上执行选择手势,例如选项卡或树节点。例如,使用此语法可选择特定选项卡,但使用以前的语法可从选项卡组中选择特定选项卡。testCase,compNoOpts)
输入参数
测试用例,指定为 matlab.uitest.TestCase 对象。
测试期间要选择的组件,指定为支持选择手势的 UI 组件对象。支持选择手势的组件包括复选框、旋钮、开关和下拉列表。
| 支持的组件 | 典型的创建函数 |
|---|---|
| 按钮组 | uibuttongroup |
| 复选框 | uicheckbox |
| 分档旋钮 | uiknob |
| 下拉列表 | uidropdown |
| 旋钮 | uiknob |
| 列表框 | uilistbox |
| 单选按钮 | uiradiobutton |
| 滑块 | uislider |
| 状态按钮 | uibutton |
| 开关(跷板、滑块、拨动) | uiswitch |
| 选项卡组 | uitabgroup |
| 切换按钮 | uitogglebutton |
| 切换工具 | uitoggletool |
要在 UI 组件中选择的项目。option 的数据类型取决于所测试的组件的类型。例如,如果该分量是开关,则 option 是开关的 Items 属性中的文本或数值。如果该组件是复选框或切换工具,则 option 是逻辑值。对于具有可编辑单元格的表 UI 组件,option 可以是逻辑值或与单元格中包含的数据对应的下拉项。
当组件具有 Items 属性时,option 可以是 Items 中某个元素的值,也可以是 Items 中某个元素的索引。例如,对于默认的分档旋钮,您可以使用 option 值 'Medium' 或 3 来选择 'Medium'。
要选择的组件,指定为支持选择手势且不需要其他信息的 UI 组件对象。支持选择手势的组件包括选项卡和树节点。
| 支持的组件 | 典型的创建函数 |
|---|---|
| 制表符 | uitab |
| 树节点 | uitreenode |
目标表 UI 组件,指定为 matlab.ui.control.Table 对象。表 UI 组件是用 uitable 函数创建的。
要选择的表单元格的索引,指定为 N×2 数组。indices 的形状取决于单元格选择的类型:
以不连续方式选择一个或多个单元格 - N×2 矩阵,其中 N 是要选择的单元格数。每个矩阵行对应于要选择的单元格的行和列索引。
连续选择多个单元格 - 指定要选择的单元格块边界的 2×2 矩阵。每个矩阵行对应于一个单元格的行和列索引。App 测试框架对指定的单元格以及这些单元格之间的所有单元格执行选择手势。
示例: [1 2](选择单个单元格)
示例: [2 3; 2 4; 5 1](以不连续方式选择三个单元格)
示例: [1 1; 3 3](连续选择九个单元格)
示例
创建一个分档旋钮。
knob = uiknob('discrete');
创建一个交互式测试用例并选择 'High' 旋钮值。用一个动画蓝点执行编程选择手势。
tc = matlab.uitest.TestCase.forInteractiveUse;
tc.choose(knob,'High')
查看旋钮上 Items 属性的值。
knob.Items
ans =
1×4 cell array
{'Off'} {'Low'} {'Medium'} {'High'}按索引选择 'Low' 旋钮值。旋钮从 'High' 移动到 'Low'。
tc.choose(knob,2)

创建一个列表框并启用多节点选择。
listbox = uilistbox('Multiselect','on')
listbox =
ListBox (Item 1) with properties:
Value: {'Item 1'}
Items: {'Item 1' 'Item 2' 'Item 3' 'Item 4'}
ItemsData: []
Multiselect: 'on'
ValueChangedFcn: ''
Position: [100 100 100 74]
Show all properties
创建一个交互式测试用例并选择项目 1 到 3。
tc = matlab.uitest.TestCase.forInteractiveUse; tc.choose(listbox,1:3)

使用 Items 属性的值选择项目 1 和 3。
tc.choose(listbox,{'Item 1','Item 3'})
创建一个滑块控件。
s = uislider;
创建一个交互式测试用例,并验证滑块按钮的值为 0。
tc = matlab.uitest.TestCase.forInteractiveUse; tc.verifyEqual(s.Value,0)
Verification passed.
选择新滑块值并验证滑块值发生更改。由于框架模仿用户将组件移动到任意精确值的操作,因此最好使用容差来比较实际滑块值和预期滑块值。
expVal = 42;
tc.choose(s,expVal)
tc.verifyEqual(s.Value,expVal,'AbsTol',0.1)Verification passed.
创建包含两个选项卡的图窗。
fig = uifigure; group = uitabgroup(fig); tab1 = uitab(group,'Title','Tab #1'); tab2 = uitab(group,'Title','Tab #2');
创建一个交互式测试用例,并验证选择的选项卡标题中包含子字符串 '#1'。
tc = matlab.uitest.TestCase.forInteractiveUse;
tc.verifySubstring(group.SelectedTab.Title,'#1')verification passed.
选择选项卡 2 并验证选择的选项卡发生改变。
tc.choose(group,'Tab #2')
tc.verifyEqual(group.SelectedTab,tab2)Verification passed.
创建一个包含混合使用的不同数据类型的表 UI 组件。设置 ColumnEditable 属性,以便用户可以编辑最后一列中的数据。
fig = uifigure;
uit = uitable(fig);
d = {'Male',52,true;'Male',40,true;'Female',25,false};
uit.Data = d;
uit.ColumnName = {'Gender','Age','Authorized'};
uit.ColumnEditable = [false false true];创建一个交互式测试用例,并选择具有索引 (2,2) 的表单元格。
tc = matlab.uitest.TestCase.forInteractiveUse; tc.choose(uit,[2 2])

清除具有索引 (1,3) 的表单元格中的复选框。
tc.choose(uit,[1 3],false)

创建一个显示 10×3 随机整数数组的表 UI 组件。
fig = uifigure;
uit = uitable(fig,'Data',randi(100,10,3));创建一个交互式测试用例,选择具有索引 (1,1) 和 (3,3) 的单元格。
tc = matlab.uitest.TestCase.forInteractiveUse; tc.choose(uit,[1 1; 3 3],'SelectionMode','discontiguous')

现在,选择具有索引 (1,1) 和 (3,3) 的单元格以及这些单元格之间的所有单元格。
tc.choose(uit,[1 1; 3 3],'SelectionMode','contiguous')

版本历史记录
在 R2018a 中推出为了更好地模拟必须展开树节点才能与嵌套节点交互的用户,当您使用 choose 方法在折叠的树节点上执行手势时,节点展开回调将执行。您可以通过设置树的 NodeExpandedFcn 属性来指定该回调。
例如,在树中的某嵌套节点上执行选择手势,并显示任何以编程方式展开的节点的文本。
fig = uifigure; t = uitree(fig); t.NodeExpandedFcn = @(src,event) disp(event.Node.Text); parent = uitreenode(t,"Text","Runners"); child1 = uitreenode(parent,"Text","Joe"); child2 = uitreenode(parent,"Text","Linda"); testCase = matlab.uitest.TestCase.forInteractiveUse; testCase.choose(child2)
如果您不想执行该回调,而是想保留 R2023b 及更早版本中的行为,请在执行手势之前展开树节点。在以下代码中,回调不执行。
fig = uifigure; t = uitree(fig); t.NodeExpandedFcn = @(src,event) disp(event.Node.Text); parent = uitreenode(t,"Text","Runners"); child1 = uitreenode(parent,"Text","Joe"); child2 = uitreenode(parent,"Text","Linda"); testCase = matlab.uitest.TestCase.forInteractiveUse; expand(parent) testCase.choose(child2)
您可以在针对表 UI 组件的测试中执行选择手势。choose 方法使用新语法来测试单个表单元格或多个表单元格上的选择手势。
您可以在针对切换工具的测试中执行选择手势。
当您使用索引选择单选按钮或切换按钮时,App 测试框架将对 ButtonGroup 对象的 Buttons 属性进行索引。在以前的版本中,框架对 ButtonGroup 对象的 Children 属性进行索引。例如,创建一个包含六个切换按钮的按钮组:
f = uifigure; bg = uibuttongroup(f); tb1 = uitogglebutton(bg,'Position',[11 165 140 22],'Text','One'); tb2 = uitogglebutton(bg,'Position',[11 140 140 22],'Text','Two'); tb3 = uitogglebutton(bg,'Position',[11 115 140 22],'Text','Three'); tb4 = uitogglebutton(bg,'Position',[11 90 140 22],'Text','Four'); tb5 = uitogglebutton(bg,'Position',[11 65 140 22],'Text','Five'); tb6 = uitogglebutton(bg,'Position',[11 40 140 22],'Text','Six');
下表显示用索引 2 指定的切换按钮上的选择手势的结果:
| 测试 | 从 R2020b 开始 | R2020a 及更早版本 |
|---|---|---|
tc = matlab.uitest.TestCase.forInteractiveUse; tc.choose(bg,2) | MATLAB® 选择切换按钮 | MATLAB 选择切换按钮 |
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)