Сбой вызова «click ()» для флажков в транспортире

#javascript #protractor #end-to-end

#javascript #транспортир #сквозной

Вопрос:

в одном из моих тестовых случаев я должен выполнить щелчок по флажку

я пытался : —

 var cb  = element(by.css('#port' text));
cb.click() // failed 
  

и

 browser.actions().mouseMove(cb).click().perform();
  

кто-нибудь сталкивался с подобной проблемой, есть ли какой-либо другой обходной путь для этого

обновлено — опробовано с жестко закодированными значениями:

Шаблон

    <input type="checkbox" style="min-width:50px;" id="port32201295-a833-45ea-8268-7c4bc0aa9887" ng-checked="port.checked" ng-disabled="port.disabled" ng-click="getSelectedPorts($event,port); 
submenu.network.minimizeMaximizePops($event)">
  

JS

     var cb  = element(by.css('#port32201295-a833-45ea-8268-7c4bc0aa9887'));
        cb.click() // failed(element is not visible | but element is visible have height amp; width) 
browser.actions().mouseMove(cb).click().perform();// nothing happens
  

Комментарии:

1. Можете ли вы вставить весь код, возможно, текст не определен?

2. я также пробовал с жестко закодированным значением, и синтаксической ошибки нет, я сталкиваюсь с проблемой только с флажками

3. Вызов .click () для флажка должен работать нормально, я считаю, что проблема здесь в том, что ваш селектор не выбирает элемент. Вы пробовали зайти в инструменты разработчика браузера и выполнить там инструкцию?

4. @TomNijs я обновил вопрос, а также запустил $ (‘#port32201295-a833-45ea-8268-7c4bc0aa9887’) в firebug, который фиксирует правый флажок

5. Может быть, происходит анимация (даже очень короткая) прямо перед тем, как вы пытаетесь щелкнуть флажок?

Ответ №1:

В качестве альтернативы вы можете использовать для щелчка флажка с помощью element(locator).click()

 function setCheckBoxTo(locator, value){
    var checkbox = element(locator);
    checkbox.isChecked().then(function(selected){
        if(selected !== value){
            checkbox.click();
        }
    }
}
  

Ссылка здесь автора

Ответ №2:

Исправлена эта проблема путем удаления флажка формы пользовательских стилей, в моем случае реальный флажок переопределяется флажком, похожим на div, поскольку этот элемент не виден для транспортира, это происходит только в случае флажков, потому что я также использую select2.js для полей выбора.