Невозможно щелкнуть элемент, далее ошибка не отображается в консоли транспортира - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть кнопка с крестиком, которую я пытаюсь нажать. Ниже мой код транспортира:

browser.sleep(5000);
removepersona.isPresent().then(function(displayed){
if(displayed){
removepersonaval.click();

где xpath для элементов:

button: var removepersona= element(by.css('ul[class="tags"] li'));
cross icon: var removepersonaval= element(by.css('ul[class="tags"] li 
span'));

Это HTML-код:

<ul _ngcontent-c5="" class="tags">
<!----><li _ngcontent-c5="">BIKER&nbsp;
<span _ngcontent-c5="">×</span>
</li>
`enter code here`</ul>

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

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

Так что вам нужно пойти с JS-скриптом. Определите это действие в вашем коде

    /**
     *  Clicks on passed element by injecting js click() in the context of window
     *  @param {ElementFinder}      $element                        Locator of element
     *  @param {number}             [timeout=timeouts.ms1000]       Time in ms (med. is 1000ms)
     *  @return {promise.Promise}
     */
    jsClick: ($element, timeout = timeouts.ms1000) =>
        browser.wait(
            protractor.ExpectedConditions.presenceOf($element),
            timeout,
            "waitThenClickScript on " + $element.locator()
        ).then(() => browser.executeScript(
            "arguments[0].click();",
            $element.getWebElement()
        ))

Он будет ждать появления элемента, а затем введет код в консоль браузера, чтобы щелкнуть элемент. Так что просто сделай

jsClick(removepersona);

Также полезно использовать, когда вы не хотите знать, является ли что-то видимым, и хотите щелкнуть элемент независимо (без прокрутки вниз по странице, пока он не станет видимым). С другой стороны, не следует полностью полагаться на него, так как нажатие кнопки Protr является частью проверки вашего пользовательского интерфейса

0 голосов
/ 15 ноября 2018

Локаторы выглядят нормально.

Сделайте console.log и проверьте, если displayed is true.

removepersona.isPresent().then(function(displayed){
  if(displayed) {
  console.log("displayed"); 
     removepersonaval.click();
  }else{
     console.log("Not displayed"); 
  }  
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...