protractor - 量角器测试未完成,似乎循环直到茉莉超时错误命中
问题描述
无法进行最基本的量角器测试,我感到很愚蠢。给定量角器 5.4.1 我有一个 spec.js
describe('my example tests', () => {
const EC = protractor.ExpectedConditions;
it('tests google', async () => {
await browser.waitForAngularEnabled(false);
await browser.get("https://google.com");
await browser.wait(EC.visibilityOf($('input')));
await element(by.css("input")).click();});});
和一个conf
exports.config = {
directConnect: true,
specs: ['tests/**/*.js'],
capabilities: {
browserName: 'chrome',
},
SELENIUM_PROMISE_MANAGER: false,
jasmineNodeOpts: {
defaultTimeoutInterval: 40000
}
};
运行时protractor conf.js
浏览器打开,转到页面,然后在 40s 茉莉花超时命中之前什么都没有发生。我得到的是每秒约 25 个警告,
W/element - more than one element found for locator By(css selector, input) - the first result will be used
就好像某个命令在无限循环中运行,直到我得到一个错误Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
,它并没有告诉我太多并且很难用谷歌搜索。
有没有人遇到过这个问题?
解决方案
在 Google 页面上,定位器 $('input') 匹配许多元素,这就是您收到警告的原因。用了第一个,可惜第一个被隐藏了。所以await browser.wait(EC.visibilityOf($('input')));
失败了,这给出了超时错误。使用定位器来定位页面上唯一且未隐藏的输入元素,就像element(by.name('q'))
应该更好地工作一样。
我喜欢Hetzner 云量角器测试助手,它提供像 waitToBeDisplayed 这样的包装器,如果我没记错的话,它的错误报告不太通用(我已经有一段时间没有使用它了)。
推荐阅读
- javascript - 如何使用下面的代码增加视频的大小
- angular - 无法读取 tsconfig.base.json!- Apollo Angular 项目设置
- c# - C# Selenium 错误 - 操作已超时
- django - 用户更改用户名后如何更新/创建新的 jwt
- reactjs - React Navigation v5 选项 / setOptions 作为函数
- python - Drop rows from Dataframe
- azure-logic-apps - Azure 逻辑应用程序:如何使用 Vault 机密中的连接字符串调用存储过程
- circleci - 带有 CicrcleCI 的 WebdriverIO-chromedriver 版本出错
- node.js - 如何使用猫鼬查询子子文档?
- python - Tkinter:OptionMenu 多屏下拉列表定位控制