Как исправить ошибку Invalid locator в структуре транспортир-огурец? - PullRequest
0 голосов
/ 08 июля 2019

Получение неверного локатора во время работы каркаса транспортир-огурец.Я установил платформу protractor-cucumber с необходимыми зависимостями.

До получения этой ошибки транспортиру не удалось найти определения шагов для файлов объектов.Итак, я понизил версию огурца с 4.2.1 до 1.3.3 и смог найти определение шага, но получил ошибку неверного локатора, даже если я предоставил действительный локатор для класса кнопки (.button-large.button-primary.has-shield.has-shadow).


export default function() {
  this.Given(/^I am on the "([^]*)" page$/, { timeout: 40 * 1000 }, async function homepage(page) {
      console.log(page);
      await browser.get('http://www.angularjs.org');
      const ele = await element(by.css('.button-large.button-primary.has-shield.has-shadow'));
      return element(ele).click();
    });
}```

Getting below error
``` TypeError: Invalid locator
         at Object.check [as checkedLocator] (/mnt/c/Angular/node_modules/protractor/node_modules/selenium-webdriver/lib/by.js:275:9)
         at thenableWebDriverProxy.findElements (/mnt/c/Angular/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:1041:18)
         at ptor.waitForAngular.then (/mnt/c/Angular/node_modules/protractor/built/element.js:159:44)
         at process._tickCallback (internal/process/next_tick.js:68:7)```
Protractor should run above code as it is valid locator.

Package.json

    {
      "name": "test",
      "version": "1.0.0",
      "description": "test",
      "main": "config.js",
      "dependencies": {
        "babel-cli": "6.26.0",
        "babel-core": "6.26.3",
        "babel-loader": "6.4.1",
        "babel-plugin-add-module-exports": "0.2.1",
        "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
        "babel-plugin-transform-runtime": "^6.23.0",
        "babel-polyfill": "^6.26.0",
        "babel-preset-es2015": "6.24.1",
        "babel-preset-stage-2": "6.24.1",
        "babel-register": "6.26.0",
        "chai": "^4.2.0",
        "chai-as-promised": "^7.1.1",
        "chai-smoothie": "^0.3.2",
        "chromedriver": "2.40.0",
        "cucumber": "1.3.3",
        "protractor": "^5.3.2",
        "protractor-cucumber-framework": "^5.0.0",
        "protractor-helper": "^3.7.8",
        "selenium-webdriver": "2.53.3"
      },
      "scripts": {
        "test": "protractor config.js"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "babel-core": "^6.26.3"
      }
    }

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Попробуйте опцию ниже

const ele = element(by.css('.button-large.button-primary.has-shield.has-shadow'));
await ele.click();

Надеюсь, это поможет вам

0 голосов
/ 08 июля 2019

Это происходит потому, что вы пытаетесь передать ElementFinder в функцию element.

в этой строке:

      return element(ele).click();

Попробуйте это:

  export default function() {
    this.Given(/^I am on the "([^]*)" page$/, { timeout: 40 * 1000 }, async function homepage(page) {
      console.log(page);
      await browser.get('http://www.angularjs.org');
      return await element(by.css('.button-large.button-primary.has-shield.has-shadow')).click();
    });
  }

или, если хотите, например:

 export default function() {
    this.Given(/^I am on the "([^]*)" page$/, { timeout: 40 * 1000 }, async function homepage(page) {
      console.log(page);
      await browser.get('http://www.angularjs.org');
      const ele = await element(by.css('.button-large.button-primary.has-shield.has-shadow'));
      return ele.click();
    });
  }
...