我刚刚在VS Code中使用Protractor编写了我的第一个e2e测试。这是一个奇怪的问题,一直困扰着我好几天。我不时收到这个错误。我注意到有时当我关闭VS Code并重新打开它时。问题将消失。但是,它会在一段时间后回来。
test.spec.ts
fit('should have an quote price', async () => {
await page.fillApplicantAge(0, '20');
const tobaccoUsageSelection = page.getRadioButton('smoker', 'no');
await page.clickElement(tobaccoUsageSelection);
const planTypeSelection = page.getNamedRadioButton('planType', 'Single');
await page.clickElement(planTypeSelection);
const coverageTypeSelection = page.getNamedRadioButton('coverageType', 'Gold');
await page.clickElement(coverageTypeSelection);
await page.fillApplicantEffectiveDate(0, 'today');
await page.fillApplicantExpiryDate(0, 'next month');
await page.setSelectBoxValueInsideChildComponent('destination', 'New York');
await page.fillTextBox('sumInsured', '5500');
const priceElement = await page.getElementByCss('h3 .amount');
expect(+(await priceElement.getText()).replace(',', '')).toBeGreaterThan(0);
});
并在test.po.ts文件中:
async setSelectBoxValueInsideChildComponent(formFieldName: string, value: string) {
const formField = element(by.css(`[formControlName="${formFieldName}"] select`))
.element(by.css(`option[value="${value}"]`));
await formField.click();
}
getElementByCss(selector: string) {
return element(by.css(selector));
}
因此应该成功运行此测试文件。它实际上已经成功运行了好几次。但有时候,“目的地”行引发错误,有时“h3 .amount”行会无缘无故地抛出错误。
失败:找不到使用定位器的元素:By(css selector,option [value =“xxx”])
屏幕闪烁并快速退出。所以我无法检查发生了什么。
我很困惑。到目前为止,我关闭了VS Code以解决问题。但它真的让我感到困惑,因为一旦我修改了某些东西,错误就会回来。
请帮忙!提前谢谢!
顺便说一句,我们如何在VS Code中调试e2e测试?我已尝试过互联网上的一些建议,没有任何效果...... :(答案 0 :(得分:0)
" No Access-Control-Allow-Origin'我重新启动VS Code之后就消失了....我也想出了为什么第二个" h3 .amount"失败。这是来自API的报价。我的localhost比其他开发人员慢。所以我实际上需要让浏览器等待几秒钟以确保报价存在。不知何故,使用" var EC = protractor.ExpectedConditions;"不适合我。
答案 1 :(得分:0)
解决“No Access-Control-Allow-Origin”问题编辑protractor.conf文件
并在chromeOptions的args中添加"--disable-web-security"
。
应该有点:
exports.config = {
params: {
test: 'hml'
},
directConnect: true,
multiCapabilities: [
{
name: 'desktop',
browserName: 'chrome',
chromeOptions: {
args: ['--disable-extensions --disable-web-security']
},
specs: ['./e2e/**/*.e2e-spec.ts', './e2e/**/*.e2e-spec.dsk.ts']
}