答案 0 :(得分:4)
因此,我不确定这是否会完全适合您的情况。我尝试使用类'已禁用'模拟具有多个选项的下拉列表,并使用一个函数进行了测试,该函数将单击下拉列表中未禁用的第一个选项,我基于该函数关闭this
这是我创建的示例下拉列表
https://jsfiddle.net/L6p2u/190/
以下是测试代码(橙色应为未禁用的第一个选项)
import { Selector, t } from 'testcafe';
fixture `testcafe canvas`
.page `https://jsfiddle.net/L6p2u/190/`;
const medwait = 5000
const longwait = 15000;
const dropdown = Selector('#colour');
async function selectFirstAvailableOption(selector) {
const select = selector;
await t // select the first available option
.setTestSpeed(0.7)
.hover(select)
.expect(select.hasAttribute("disabled")).notOk({timeout: 5000})
.click(select)
.click(select
.find("option")
.filter((node) => {
if (node && node.className.indexOf('is-disabled') == -1) {
return true;
}
return false;
})
.nth(0)).wait(5000); // this wait is just so you can see
}
test('Instructor', async t => {
await t
.switchToIframe('[name="result"]')
await selectFirstAvailableOption(dropdown);
});
答案 1 :(得分:0)
使用该解决方案,可以在与下拉菜单进行交互时避免调用“ .setNativeDialogHandler(()=> true)”。
export async function create(name) {
const dropdown = await Selector("#dropDownID");
const dropdownOption = dropdown.find("option");
await t
.click(dropdown)
.click(dropdownOption.withText(name))
.click(Selector("#submitBtn"));
}