Ошибка типа: неверный локатор - PullRequest
0 голосов
/ 16 мая 2019

Получение ошибки TypeError: Invalid locator

Я сделал многоразовую функцию, чтобы проверить, отображается ли элемент, передавая локатор в параметре. пожалуйста, посмотрите на код.

export function checkDisplay(Locator) {
    expect(element(Locator).isDisplayed()).to.be.true;
}

var abc= by.css('mycss');

checkDisplay(abc)

Я передаю abc locator в этой функции, но все равно выдает эту ошибку.

ниже ошибка.

at Object.check [as checkedLocator] 
at thenableWebDriverProxy.findElements
at ptor.waitForAngular.then 
at ManagedPromise.invokeCallback_

Ответы [ 5 ]

0 голосов
/ 16 мая 2019

попробуйте

import { protractor, browser } from 'protractor';

export function checkDisplay(Locator) {
  var abc = element(Locator);

  // Check whether element is identified or not??    
  var EC = protractor.ExpectedConditions;
  browser.wait(EC.visibilityOf(abc), 30000, "abc element Could not found");

  expect(abc.isDisplayed()).to.be.true;
}

var abc = by.css('mycss');
checkDisplay(abc);
0 голосов
/ 16 мая 2019

Для написания общей функции, вы можете использовать миксин javaScript.Это позволяет нам создавать объект полезных или общих функций и объединять его с прототипом любого класса.Транспортир использует элемент для определения местоположения webElement, который возвращает объект ElementFinder.Вы можете создать миксин для класса ElementFinder.Я просто дам вам пример, а затем вы сможете изучить его подробнее.

ElementFinderMixin = {

           function1() {},
           function2() {},

           function checkDisplay() {
    expect(this.isDisplayed()).to.be.true;}
}

Object.assign(Object.getPrototypeOf(element('')), ElementFinderMixin);

Так что предыдущий код сделает все три функции частью класса ElementFinder.Это означает, что вы можете получить доступ к функции CheckDisplay () в любом месте вашего кода.

Пример.

button = element(by.css('locator'));
button.checkDisplay();
0 голосов
/ 16 мая 2019

Вы можете использовать следующий фрагмент кода.

 export function checkDisplay(webElement) {
        expect(webElement.isDisplayed()).to.be.true;
    }

    var abc= element(by.css('mycss'));
    checkDisplay(abc)

      or

     checkDisplay(element(by.css('mycss')))
0 голосов
/ 16 мая 2019

возможно попробуйте:

export function checkDisplay(loc: ElementFinder): void {
  expect(loc.isDisplayed()).toBeTruthy();
}

let abc = $('mycss');
checkDisplay(abc);

Или

export function checkDisplay(loc: string): void {
      expect(element(by.css(loc)).isDisplayed()).toBeTruthy();
}

let abc = 'mycss';
checkDisplay(abc);
0 голосов
/ 16 мая 2019

Попробуйте приведенный ниже

export function checkDisplay(Locator) {
    expect(element(Locator).isDisplayed()).to.be.true;
}

var abc= "by.css('mycss')";

checkDisplay(abc);

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

...