我试图在对话框容器(对话框容器的图像(中使用量角器与一些隐藏元素交互,所以我尝试了很多选项,但都没有成功。(铬测试(
我的设置:I/status-硒独立版本可用:3.141.59[最后]
I/status-chromedriver可用版本:2.46、77.0.3865.10、80.0.3987.16[最后一个]
I/status-geckodriver版本可用:v0.26.0〔最后一个〕
I/status-IEDriverServer不存在
I/status-android sdk不存在
I/status-appium不存在
第一次尝试使用浏览器操作来向下翻页对话框并找到隐藏的元素:
placeSistema = element(by.css('element(by.css('[placeholder = "Sistema"]'))
this.clicaCampoSistema = async function () {
await browser.actions().sendKeys(protractor.Key.PAGE_DOWN).perform();
await placeSistem.click();
}
失败:sendKeysToActiveElement
第二次尝试使用mouseMove点击隐藏元素:
placeSistema = element(by.css('element(by.css('[placeholder = "Sistema"]'))
this.clicaCampoSistema = async function () {
await browser.actions().mouseMove(placeSistema).click().perform();
}
错误:超时-未在jasmine指定的超时内调用异步回调。DEFAULT_TIMEOUT_INTERVAL。
有人有什么建议吗?非常感谢!!!
- 解决方案:在社区的帮助下,我使用了这段代码来解决我的问题
await browser.executeScript("arguments[0].click()", placeSistema);
这非常有效!
您尝试过将scrollIntoView与executeScript一起使用吗?这应该将该元素滚动到视口中
placeSistema = element(by.css('element(by.css('[placeholder = "Sistema"]'))
this.clicaCampoSistema = async function () {
await browser.executeScript('arguments[0].scrollIntoView(true)', placeSistema.getWebElement());
await placeSistem.click();
}
默认情况下,量角器将元素滚动到可见性中。使用element.click((将:
- 找到元素
- 滚动到它并将光标移动到元素的中心
- 执行单击
只要元素在DOM中,量角器就能够定位它们,只要有滚动条,量角仪就会知道如何使用它。
如果通常的元素.click((不起作用,您可以尝试使用browser.actions((
await browser.actions().mouseMove(elem).perform();
await browser.sleep(1000); // Shouldn't be necessary, but it might help
await browser.actions().click().perform();
或者只是
await browser.actions().mouseMove(elem).click().perform();
我以前遇到过由动画引起的将这两个命令放在一起的问题,所以我更喜欢将其拆分为两个不同的命令。
如果这些都不起作用,您可以尝试在功能中禁用w3c,因为在Selenium webdriver 4.0和protractor 6.0.0中不支持量角器使用的当前Actions Api,并且在当前chromedriver版本中仍然存在一些错误。
尝试以下脚本:
placeSistema = element(by.css('element(by.css('[placeholder = "Sistema"]'))
browser.executeScript(() => {
placeSistema .scrollIntoView();
}, el.getWebElement());
placeSistema.click()