【问题标题】:How to click on element from list which is invisible on current visible frame? [duplicate]如何从列表中单击在当前可见框架上不可见的元素? [复制]
【发布时间】:2013-06-02 09:18:12
【问题描述】:

我想单击列表中的元素,但问题是,该元素存在于列表中,但由于该列表的巨大尺寸,所需元素在页面(当前帧)上不可见。要单击所需元素,我必须向下滚动列表,然后该元素才会可见。

请建议我如何做到这一点。我正在使用使用 Ruby 的 Selenium Webdriver。

【问题讨论】:

  • 也许这个话题会有所帮助stackoverflow.com/questions/12035023/…
  • 你的意思是什么列表?是下拉列表(一个 html <select>),还是别的什么?
  • 不,它不是下拉列表。这是一个包含 30-35 个选项或链接的简单列表,但由于列表很大,我的预期元素正在当前显示页面上隐藏。要查看该元素,我已经向下滚动页面,然后我的元素正在显示。

标签: selenium webdriver selenium-webdriver


【解决方案1】:

曾经在类似的情况下使用过以下解决方案,它对我有用。基本上获取列表的所有元素并使用 Actions 遍历每个元素并获取文本,如果它是必需的选项,则再次使用 Actions 类单击它。

【讨论】:

  • 您能提供以下解决方案的代码示例吗?
【解决方案2】:

你可以使用getLocationOnScreenOnceScrolledIntoView方法make WebDriver scroll the element into view:

if (element instanceof Locatable) {
    Locatable remoteElement = (Locatable) inputElement;          
    remoteElement.getLocationOnScreenOnceScrolledIntoView();
}

【讨论】:

  • 感谢 vincebowdren.. 但在 ruby​​ 中,方法是“element.location_once_scrolled_into_view”..
【解决方案3】:

Selenium 应该模仿用户行为,因此默认情况下不支持单击不可见元素。

这样做你可能会遇到一个例外。

【讨论】:

    【解决方案4】:

    你可以试试这个,
    当元素可见时捕获元素的xpath(或者你认为正确的任何id)
    并使用js点击它
    在这里,我想点击退出,只有在鼠标悬停时才能在下拉菜单中看到它。

    WebElement hiddentElement = driver.findElement(By
                                    .xpath("//*[@id='navright']/li[3]/ul/li[2]/a"));
                    ((JavascriptExecutor) driver).executeScript("arguments[0].click();",
                                    hiddentElement);
    

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多