我正在尝试与对话框容器(Image of Dialog Container)中带有量角器的某些隐藏元素进行交互,因此我尝试了很多选择,但均未成功。 (镀铬测试)
我的设置:I /状态-可用的硒独立版本:3.141.59 [last]
I /状态-可用的chromedriver版本:2.46,77.0.3865.10,80.0.3987.16 [last]
I /状态-geckodriver版本可用:v0.26.0 [最新]
I /状态-IEDriverServer不存在
我/状态-android-sdk不存在
我/状态-鸦片不存在
第一次尝试使用浏览器操作来使对话框向下翻页并找到隐藏的元素:
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指定的超时内未调用异步回调。
有人有建议吗?非常感谢!!
默认情况下,量角器将元素滚动到可见性中。使用element.click()将:
只要元素在DOM中,量角器就可以找到它们,并且只要有滚动条,量角器就会知道如何使用它。
如果普通的element.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版本中仍然存在一些错误。