量角器-在对话框容器中向下滚动以单击元素

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

我正在尝试与对话框容器(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指定的超时内未调用异步回调。

有人有建议吗?非常感谢!!

javascript selenium jasmine protractor selenium-chromedriver
1个回答
0
投票

默认情况下,量角器将元素滚动到可见性中。使用element.click()将:

  1. 查找元素
  2. 滚动到它并将光标移动到元素的中心
  3. 执行点击

只要元素在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版本中仍然存在一些错误。

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