Невозможно нажать на кнопку с помощью транспортира. Текст кнопки в дочернем диапазоне - PullRequest
0 голосов
/ 20 июня 2019

Невозможно нажать кнопку с помощью транспортира.DOM, как показано на рис.

Ниже приведены некоторые из локаторов, которые я уже пробовал.

  1. element (by.xpath ("(// div [@ class = 'mat-ящик-Background NG)-star-вставлен ']) 2 // follow-sibling :: mat-sidenav // div // mat-nav-list // button "))
  2. элемент (by.xpath ("((// div [@ class = 'mat-box-inner-container']) 2 // button // div)"))
  3. элемент (by.deepCss ("mat-button-ripple mat-ripple")) * элемент 1014 *
  4. (by.deepCss ("mat-button-wrapper"));
  5. элемент (by.xpath ("// div [@ class = 'mat-button-focus-overlay'] "))
  6. элемент (by.xpath (" // span [содержит (., 'LOOK')] ")) и некоторыебольше с комбинациями xpath, cssContainedText

Ошибка 1: не активируется в точке (78, 106).Другой элемент получит щелчок: ...

Ошибка 2: Элемент, найденный с помощью локатора, не найден: By (селектор css, * / deep / mat-button-ripple mat-ripple) и некоторые другие

Ожидается: нажать кнопку «смотреть». Факт: нажать кнопку «не приземлиться»

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Поскольку у меня нет вашего источника HTML-страницы, поэтому я начну видеть с.После html-страницы, если вы используете страницу объекта в транспортире, вы можете использовать:

var EC =  protractor.ExpectedConditions;
var button = element(by.css("mat-slidenav.layout-navigator .mat-nav-list button.mat-list-header"));


this.clickLookButton = function(){
browser.wait(EC.presenceOf(button));
browser.wait(EC.elementToBeClickable(button));
browser.executeScript("arguments[0].click();", button.getWebElement());
};

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

browser.executeScript("arguments[0].click();", button.getWebElement());

Если вы используете функцию щелчка транспортира:

button.click();

Удачи!

1 голос
/ 20 июня 2019

Кажется, что когда вы получаете ошибку 1, вы правильно определяете местоположение элемента, он просто возвращает ошибку not clickable at point....Вы можете попытаться создать функцию, которая прокручивает этот элемент, а затем ожидает его нажатия.Попробуйте следующее:

const EC = protractor.ExpectedConditions;
const yourElement = ;  // <--- whatever locator worked

const clickElement = async () => {
    await browser.executeScript('arguments[0].scrollIntoView(true)', yourElement.getWebElement());
    await browser.wait(EC.elementToBeClickable(yourElement), 5000);
    await yourElement.click();
};

Также попробуйте этот тип локатора:
element(by.css('.mat-nav-list.mat-list-base button span'));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...