如何使用 Mocha/Chai/Protractor 单击复选框
How to click on a checkbox using Mocha/Chai/Protractor
我很难尝试单击在 DOM 中呈现的元素,但由于某些奇怪的原因,它仍然给我一个错误提示:
WebDriverError: element click intercepted: Element is not clickable at point (281, 687)
elements/fields 的照片:
如您所见,这就是当 运行 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());
});
但是它仍然说该元素不可点击。奇怪的是,如果我在点击发生之前手动向下滚动页面,那么它点击时没有任何问题,但是如果复选框的长度与图片相同,那么它会抛出一个错误,说明该元素是无法点击。
我的问题是如何才能单击该元素而不会收到有关该元素不可单击的错误消息?
编辑:
我看到您在尝试单击元素之前正在等待该元素出现。有时这可能会导致一些问题,因为 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()));
});
您是否尝试过滚动查看并单击 Scroll down to an element with protractor 中指定的解决方案。应该可以。
我很难尝试单击在 DOM 中呈现的元素,但由于某些奇怪的原因,它仍然给我一个错误提示:
WebDriverError: element click intercepted: Element is not clickable at point (281, 687)
elements/fields 的照片:
如您所见,这就是当 运行 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());
});
但是它仍然说该元素不可点击。奇怪的是,如果我在点击发生之前手动向下滚动页面,那么它点击时没有任何问题,但是如果复选框的长度与图片相同,那么它会抛出一个错误,说明该元素是无法点击。
我的问题是如何才能单击该元素而不会收到有关该元素不可单击的错误消息?
编辑:
我看到您在尝试单击元素之前正在等待该元素出现。有时这可能会导致一些问题,因为 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()));
});
您是否尝试过滚动查看并单击 Scroll down to an element with protractor 中指定的解决方案。应该可以。