TestCafe:具有动态 ID 的 Web 应用程序(XAF 应用程序)
TestCafe: web application (XAF Application) with dynamic ids
我是 TestCafe 的新用户,我遇到了一个问题:我正在测试的 Web 应用程序包含带有动态 ID 的元素。所以当我 运行 我的测试时,我有一个错误,因为选择器在考试中找不到元素。如何解决这个问题?你能帮助我吗?
import { Selector } from 'testcafe';
fixture `test1212`
.page `192.168.1.26:801/Login.aspx?ReturnUrl=%2f`;
test('New Test 1', async t => {
await t
.typeText(Selector('#Logon_v0_38054418_MainLayoutEdit_xaf_l13_xaf_dviUserName_Edit_I'), 'TMZ\rossimarta')
.pressKey('tab')
.typeText(Selector('#Logon_v0_38054418_MainLayoutEdit_xaf_l17_xaf_dviPassword_Edit_I'), 'gipstech02')
.click(Selector('span').withText('Accedi'));
});
Selector的参数是exam中元素的id,但是每次访问页面这个id都会改变。所以当我 运行 我的测试时,我有一个错误。
谢谢大家!
解决方案是使用另一个选择器,它不基于 id,但对于正确的元素仍然是唯一的。为了进一步帮助您,您需要提供要测试的表单的 html。你可以这样做:
Selector('form input').withText('Username')
根据您的需要修改它(基于 html 结构)。如果您需要特定的解决方案,则必须提供完整的 html 表格。
编辑:
生成的 id 的结尾是静态的,在这种情况下它是一个输入字段,它的 id 总是以 'dviUserName_Edit_I' 结尾。可以创建一个只检查 id 末尾的选择器:
Selector("input[id$='dviUserName_Edit_I']")
如果开始是静态的,也可以做同样的事情:
Selector("input[id^='dviUserName_Edit_I']")
或者如果id必须包含'some string':
Selector("input[id~="some string"]")
我是 TestCafe 的新用户,我遇到了一个问题:我正在测试的 Web 应用程序包含带有动态 ID 的元素。所以当我 运行 我的测试时,我有一个错误,因为选择器在考试中找不到元素。如何解决这个问题?你能帮助我吗?
import { Selector } from 'testcafe';
fixture `test1212`
.page `192.168.1.26:801/Login.aspx?ReturnUrl=%2f`;
test('New Test 1', async t => {
await t
.typeText(Selector('#Logon_v0_38054418_MainLayoutEdit_xaf_l13_xaf_dviUserName_Edit_I'), 'TMZ\rossimarta')
.pressKey('tab')
.typeText(Selector('#Logon_v0_38054418_MainLayoutEdit_xaf_l17_xaf_dviPassword_Edit_I'), 'gipstech02')
.click(Selector('span').withText('Accedi'));
});
Selector的参数是exam中元素的id,但是每次访问页面这个id都会改变。所以当我 运行 我的测试时,我有一个错误。
谢谢大家!
解决方案是使用另一个选择器,它不基于 id,但对于正确的元素仍然是唯一的。为了进一步帮助您,您需要提供要测试的表单的 html。你可以这样做:
Selector('form input').withText('Username')
根据您的需要修改它(基于 html 结构)。如果您需要特定的解决方案,则必须提供完整的 html 表格。
编辑: 生成的 id 的结尾是静态的,在这种情况下它是一个输入字段,它的 id 总是以 'dviUserName_Edit_I' 结尾。可以创建一个只检查 id 末尾的选择器:
Selector("input[id$='dviUserName_Edit_I']")
如果开始是静态的,也可以做同样的事情:
Selector("input[id^='dviUserName_Edit_I']")
或者如果id必须包含'some string':
Selector("input[id~="some string"]")