Как проверить Select2 (Multi-select) в транспортире? - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть Select2 (множественный выбор), я хочу набрать admin и выбрать его.

это мой HTML-код:

<select class="js-select2" multiple="multiple">
    <option> admin </option>
    <option> John Doe </option>
</select>

это мой тестовый код:

describe('when select admin and press save button', function () {
        beforeAll(function () {
            browser.get('http://example');
            element(by.css("*[id='technician'] + span.select2")).click();
            browser.sleep(1000);
            element(by.css(".select2-search__field")).sendKeys('admin');
            browser.sleep(1000);
            element(by.css('.select2-results__options li:nth-of-type(1)')).click();
            element(by.buttonText('save')).click();
        });

        it('You must see a successful message', function () {
            expect(element(by.css(".alert")).getText()).toContain('Settings saved successfully');
        });
    });

Когда я выполняю код, транспортир выдает следующее сообщение:

Ошибка: элемент не взаимодействует

Где я допустил ошибки? и что мне делать?

1 Ответ

0 голосов
/ 17 сентября 2018

Select2 - это плагин jQuery, который реализует раскрывающийся список с помощью css & javascript, а не нативный раскрывающийся список, который реализуется исключительно на select.

Для такого раскрывающегося списка CSS видимая опция не приходит от select, а select невидим или видим, но из-за очень малого размера (например, размера 1 * 1) пользователь не может его использовать.

Ниже приведен пример теста кода на демоверсии с сайта Select2

describe('handsontable', function(){

    it('input text into cell', function(){

        browser.ignoreSynchronization = true;
        browser.get('https://select2.org/selections');
        browser.sleep(3000);

        // click to make the input box and options display out
        element(by.css('select.js-example-basic-multiple-limit + span' +
                       ' .select2-selection--multiple')).click();


        browse.sleep(1000);
        element(by.css("select.js-example-basic-multiple-limit + span input"))
           .sendKeys('Hawaii');

        element(by.xpath("//li[@role='treeitem'][text()='Hawaii']")).click();        

        browser.sleep(3000);
    });

})
...