为什么我不能在量角器中使用 querySelector?

mun*_*air 3 javascript protractor

我正在使用量角器。我知道量角器有类似 Jquery 的语法,但我需要一些可以在我的一些测试中基于 DOM 元素创建条件、变量和循环的东西。我希望能够使用 querySelector。仅使用承诺不会让我做我需要做的那种测试。

当我运行它时,它说:

Failed: Cannot read property 'querySelector' of undefined
Run Code Online (Sandbox Code Playgroud)

或者

Failed: document is not defined
Run Code Online (Sandbox Code Playgroud)

或者

Failed: window is not defined
Run Code Online (Sandbox Code Playgroud)

我已经设置了一个测试来测试这个问题。它运行在我正在查看的随机网页上。它使用量角器选择页脚,然后使用 querySelector 尝试它。如果我在控制台中输入 querySelector 部分,它会正确运行代码。我还尝试了 querySelector 的变体,使用 window.document; 这也适用于浏览器,但不适用于量角器。

describe("Test", function()
{
  it('This is a test to test protractor' , function()
  {
    browser.waitForAngularEnabled(false);
    browser.get("https://facebook.github.io/jest/");
    $("#footer").getAttribute("innerHTML").then( function(value)
    {
      console.log("inside value then");
      console.log(value);

    });

    var queryse = document.querySelector("#footer").innerHTML;
    // var queryse = browser.document.querySelector("#footer").innerHTML;
    // var queryse = window.document.querySelector("#footer").innerHTML;

    console.log('query selector');
    console.log(queryse);
  });

});
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Nho*_*hor 5

您在 Protractor 测试用例中运行的代码并没有真正在浏览器中运行,实际上它是在Node.js. 您应该将其视为一个 API,之后将通过WebDriver. 这意味着您不能JavaScript在代码中使用浏览器特定的API。该$助手就在那里,使语法简单,易懂,无需了解任何硒。这就是为什么documentwindow难以接近你。如果您想了解更多相关信息:https : //github.com/angular/protractor/blob/master/docs/locators.md