如何使用Mocha / Chai / Protractor单击复选框

问题描述 投票:0回答:1

我很难点击要在DOM中呈现的元素,但由于某些奇怪的原因,它仍然给我一个错误提示:

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

有关元素/字段外观的图片:

Picture of HTML

您可以看到,这是运行Mocha / Chai / Protractor时HTML中显示的内容。我正在使用代码((我想单击复选框)

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

javascript protractor mocha chai
1个回答
0
投票

我看到您正在等待元素的存在,然后再尝试单击它。有时这可能会引起一些问题,因为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()));
    });

© www.soinside.com 2019 - 2024. All rights reserved.