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

标签 javascript protractor mocha.js chai

我很难尝试单击在 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

最佳答案

我发现您正在等待该元素出现,然后再尝试单击它。有时这可能会导致一些问题,因为 presenceOf 并不一定意味着该元素是可见的。
尝试像这样链接这些函数:

等待存在 -> 等待可见性 -> 向下滚动到该元素 -> 单击它

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()));
    });

关于javascript - 如何使用 Mocha/Chai/Protractor 单击复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59769214/

相关文章:

javascript - 简单的 Angular 代码不起作用

javascript - Node.js 中的嵌套 for 循环与 Mocha 测试框架

node.js - 使用 sinon 和 mocha stub pg-promise

javascript - 如何在没有 "wrapper: false"的情况下通过 brunch 访问包装到命名空间中的函数?

javascript - nodejs 中的 RTMP 实现是可能的吗?

javascript - 如何在 jQuery-3.3.1 中调用 $(window).on ("load", function) ?

css - Protractor - 如何在定位器中使用 "or"

protractor - 我们真的需要在运行 Protractor 之前运行 webdriver-manager start 吗?

javascript - 如何在 Protractor/ Selenium 中实现间隔

node.js - 用另一个函数替换一个函数进行测试