C# Selenium-ScrollIntoView-在页眉/页脚后面隐藏元素

C# Selenium-ScrollIntoView-在页眉/页脚后面隐藏元素,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,问题:滚动查看页眉/页脚后面的隐藏元素。我的应用程序有页眉/页脚 尝试了以下解决方案: 1) ScrollIntoView(true),若元素向上并试图从底部滚动,它会将web元素隐藏在标题后面 2) 发送true/false,它可以工作,但我不知道元素的确切位置,所以不能每次都告诉框架向下/向上滚动元素 3) 直接点击元素上的(已采取行动),chrome会自动滚动到可见性,但标题是存在的,这就是为什么它隐藏在后面 请让我知道是否有任何代码可以使元素即使有页眉/页脚也可见。解决方案是c#和使用c

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

尝试了以下解决方案:

1) ScrollIntoView(true),若元素向上并试图从底部滚动,它会将web元素隐藏在标题后面

2) 发送true/false,它可以工作,但我不知道元素的确切位置,所以不能每次都告诉框架向下/向上滚动元素

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


请让我知道是否有任何代码可以使元素即使有页眉/页脚也可见。解决方案是c#和使用chrome浏览器。

对此我有几点建议:

  • 您是否看过actions API,如中所述(它主要针对Java,但C#API非常类似)
  • 您可以应用以下过程:

  • 将元素滚动到视图中
  • 找出它是否隐藏在页眉或页脚后面
  • 向下滚动页眉高度,或向上滚动页脚高度
  • 您可以获取它在页面中的绝对位置,然后滚动到那里


您可以使用Actions API实现这一点

  • 检查元素是否存在
  • 使用Actions类移动到元素
  • 检查元素是否可见
  • 若元素可见,则对元素执行操作

    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();
        }
    }
    

  • 谢谢@AZWN的回复,请告诉我您是如何决定代码元素隐藏在页眉/页脚后面,以使其向上/向下可见的。请你把密码贴出来。你能帮我吗?你可以获取它在页面中的绝对位置,然后滚动到那里。感谢你的回复@Ankur,如果存在页眉/页脚,action API也会出现同样的问题(如上所述)。所以你不能使用这个。我已经尝试过了。尝试使用JavaScriptExecuter使元素可见,然后对此执行操作。与此类似-JavascriptExecutor js=(JavascriptExecutor)驱动程序;WebElement=driver.findElement(By.id(“元素”);js.executeScript(“参数[0].setAttribute('style','z-index:-1'),元素);您粘贴的上述代码不会滚动到元素(以使其可见),因此无法工作。