在 Protractor 初始化之前无法访问 'element'

Cannot access 'element' before initialization in Protractor

我正在尝试使用 Protractor 为 Angular 应用程序编写端到端测试。我正在尝试创建一个函数,该函数在访问元素之前等待元素出现在页面上,但出现错误:

ReferenceError: Cannot access 'element' before initialization

虽然我确实需要 Protractor 的元素。

函数在文件 global.js:

const { browser, element } = require('protractor');

const global = function () {
  this.getElementAsync = (element, waitTime) =>
    browser.wait(() => element.isPresent(), waitTime)
    .then(() => browser.wait(() => element.isDisplayed(), waitTime));
  }
    
module.exports = new global();

我正在另一个文件中使用它:

const global = require('./global');
const { element } = require('protractor');
    
var someFile = function () {
  this.doWhatever = async function(sec) {
    const element = await global.getElementAsync(element(by.css('.some.css')), 5000); //error is thrown here
    return element.click();
  };
}
    
module.exports = new someFile();

我向所有人开放 suggestions/advices。

你在这行有一个变量名冲突:

const element = await global.getElementAsync(element(by.css('.some.css')), 5000); //error is thrown here

element(by.css('.some.css') 正在尝试引用 const element 而不是从量角器导入的 element,因此会出现 ReferenceError 消息。

尝试将您的变量名称更改为其他名称,它应该可以工作。

E.x:

const someElement= await global.getElementAsync(element(by.css('.some.css')), 5000);