Selenium - ScrollIntoView - 隐藏页眉/页脚后面的元素

时间:2017-06-03 15:03:13

标签: c# selenium selenium-webdriver

问题: ScrollIntoView隐藏页眉/页脚后面的元素。我的应用程序有页眉/页脚。

尝试以下解决方案:

1)ScrollIntoView(true),如果元素已启动并尝试从底部滚动,它会将网页元素隐藏在标题后面。

2)发送true / false,它有效,但我不知道元素的确切位置,因此无法每次都使用向下滚动/向上向元素滚动。

3)直接点击(采取行动)元素,chrome会自动滚动到可见性,但标题会出现,这就是为什么它隐藏在它背后。

请告诉我是否有任何单个代码可以使元素显示,即使页眉/页脚存在。解决方案是c#并使用chrome浏览器。

2 个答案:

答案 0 :(得分:0)

我对此有几点建议:

  • 您是否看过动作API,如this post中所述(主要针对Java,但C#api非常相似)
  • 您可以应用以下程序:

    1. 将元素滚动到视图
    2. 查明它是否隐藏在页眉或页脚后面
    3. 向下滚动标题的高度,或向上滚动页脚的高度。
  • 您可以在页面中获取其绝对位置,然后滚动到那里。

答案 1 :(得分:0)

您可以使用Actions API执行此操作。

  1. 检查元素是否存在。
  2. 使用Actions类移动到元素。
  3. 检查元素是否可见。
  4. 如果元素可见,则对元素执行操作。

    By element = By.id("element_id");
    if(driver.findElements(element).size()>0){
        Actions action = new Actions(driver);
        action.moveToElement(driver.findElement(element).perform();
        if(driver.findElement(element).isDisplayed()){
            driver.findElement(element).click();
        }
    }