我正在测试与剧作家和面临一个问题。
在网络上,我有一个4个字段的表单。当其中2个字段被填充时,第三个字段中会出现计算值。Expect.soft会在这个新出现的值上返回接收到的字符串:“”
作为示例,我有这部分代码:
await page.getByLabel('Buy up price').fill(buyUp); // fill Buy up price
await page.getByLabel('Percent of sale price').fill(percent); // fill Percent of sale price
if (percent != '') {
let salePrice = ((+buyUp) * (+percent)/100 + (+buyUp)).toFixed(8);
const predictPrice = page.locator('//*[@id="fvf_salePrice"]');
await expect.soft(predictPrice).toHaveText(salePrice, {timeout: 5000});
} else {
await page.getByLabel('Sale price', { exact: true }).fill(salePrice); // fill Sale price
}
在调试模式下,我看到selector //*[@id=“fvf_salePrice”]上的值存在,但预期.soft部分总是失败,它返回:预期字符串:salePrice收到的字符串:“".我看到剧作家捕捉占位符,其中显示值,但不能得到正确的值。实际上我已经使用了所有类型的选择器(XPath,CSS等),使用while循环等待数据更新,但没有帮助。测试在chromium上执行
这是因为数据的动态变化,还是代码中的错误?
1条答案
按热度按时间tjrkku2a1#
感谢所有人,我找到了一个解决方案。因为它是一个输入字段,所以toHaveText()必须替换为toHaveValue()。所以等待expect.soft(predictPrice).toHaveText(sale Price,{timeout:5000});必须替换为expect.soft(predictPrice).toHaveValue(sale Price,{timeout:});