我是自动化的新手,我正在运行一个非常基本的测试,运行正常,但是最近它停止工作,并且我不断收到以下错误:
失败:脚本超时:11秒内未收到结果
我进行了查找并进行了一些基本的调试,发现Protractor没有找到我要引用的元素(element(by.id('mat-input-0')
)-在spec.js代码文件中的更多内容。
我正在使用最新版本的量角器(5.4.2),以及茉莉花的最新版本(3.4.0)。我正在最新的Chrome浏览器上进行测试。
我尝试了许多在线解决方案(例如使用async / await,在配置文件中添加长allScriptsTimeout
和defaultTimeoutInterval
(如下所示),使用不同的定位符调用元素(通过xpath,通过id ,通过tagName,...),尝试使用browser.waitForAngular();
或browser.ignoreSynchronization = true
,...),但没有任何效果,所以我想知道是否有人对解决方案有任何意见? (或者真正的问题是什么?)
元素HTML
<input _ngcontent-mkt-c2="" class="mat-input-element mat-form-field-autofill-control cdk-text-field-autofill-monitored ng-pristine ng-invalid ng-touched" formcontrolname="email" matinput="" name="email" placeholder="Email" required="" type="text" id="mat-input-0" aria-invalid="true" aria-required="true">
describe('Login', function(){
it('test 1', async function(){
await browser.get('the STG URL im testing');
})
it('set username', async function(){
await element(by.id('mat-input-0')).sendKeys('root@user.com');
})
it('set password', async function(){
await element(by.id('mat-input-1')).sendKeys('1234');
})
})
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
allScriptsTimeout: 80000,
framework: 'jasmine',
specs: ['spec.js'],
SELENIUM_PROMISE_MANAGER: false,
jasmineNodeOpts: {
defaultTimeoutInterval: 50000
}
};
答案 0 :(得分:0)
您收到错误的原因可能有很多,但正如您所说的,您是量角器的新手。我会说先走简单的步骤。
在全局量角器安装之后。您的计算机必须在%appdata%中具有文件夹。转到目录路径AppData \ Roaming \ npm \ node_modules \ protractor \ example。在此目录中,您必须看到两个文件conf.js和example_spec.js。在spec文件中,将url替换为您拥有的url,并针对测试执行相同的操作。
运行配置文件而不对其进行任何更改。并检查它是否工作正常,那么有一些配置问题。
请通过Protractor learning进行详细了解。