Как установить флажок с помощью Mocha / Chai / Protractor - PullRequest
0 голосов
/ 16 января 2020

Я с трудом пытаюсь нажать на элемент, который отображается в DOM, но по какой-то странной причине он все еще дает мне ошибку, говорящую:

WebDriverError: element click intercepted: Element is not clickable at point (281, 687)

Изображение того, как элементы / поля смотрите:

Picture of HTML

, как вы можете видеть, это то, что показано в HTML при запуске Mocha / Chai / Protractor. Я использую код (я хочу установить флажок) :

it('click busniess customer', function (done) {

    browser.driver
        //.then(() => browser.executeScript("arguments[0].click();", piPage.getBusinessCustomerCB().getWebElement()))
        .then(() => browser.wait(EC.presenceOf(element(by.id('isBusinessCustomer'))), 10000, "Timed out Email"))
        .then(() => element(by.id('isBusinessCustomer')).click())
        .then(() => done());
});

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

У меня вопрос, как я могу щелкнуть элемент, не получив сообщение об ошибке, что элемент не кликабелен?

РЕДАКТИРОВАТЬ:

enter image description here

Ответы [ 2 ]

1 голос
/ 16 января 2020

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

wait for presence -> wait for visibility -> scroll down to the element - > click it

it('click busniess customer', function (done) {
    const element = element(by.id('isBusinessCustomer'));

    browser.driver
        .then(() => browser.wait(EC.presenceOf(element), 10000, "Timed out Email"))
        .then(() => browser.wait(EC.visibilityOf(element), 10000, "Timed out Email"))
        .then(() => browser.executeScript('arguments[0].scrollIntoView(true)', element.getWebElement())
        .then(() => element.click())
        .then(() => done()));
    });

0 голосов
/ 17 января 2020

Вы пробовали использовать прокрутку для просмотра и выбора решения, как указано в Прокрутите вниз до элемента с транспортиром . Это должно работать.

...