C# Selenium-ScrollIntoView-在页眉/页脚后面隐藏元素
问题:滚动查看页眉/页脚后面的隐藏元素。我的应用程序有页眉/页脚 尝试了以下解决方案: 1) ScrollIntoView(true),若元素向上并试图从底部滚动,它会将web元素隐藏在标题后面 2) 发送true/false,它可以工作,但我不知道元素的确切位置,所以不能每次都告诉框架向下/向上滚动元素 3) 直接点击元素上的(已采取行动),chrome会自动滚动到可见性,但标题是存在的,这就是为什么它隐藏在后面C# Selenium-ScrollIntoView-在页眉/页脚后面隐藏元素,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,问题:滚动查看页眉/页脚后面的隐藏元素。我的应用程序有页眉/页脚 尝试了以下解决方案: 1) ScrollIntoView(true),若元素向上并试图从底部滚动,它会将web元素隐藏在标题后面 2) 发送true/false,它可以工作,但我不知道元素的确切位置,所以不能每次都告诉框架向下/向上滚动元素 3) 直接点击元素上的(已采取行动),chrome会自动滚动到可见性,但标题是存在的,这就是为什么它隐藏在后面 请让我知道是否有任何代码可以使元素即使有页眉/页脚也可见。解决方案是c#和使用c
请让我知道是否有任何代码可以使元素即使有页眉/页脚也可见。解决方案是c#和使用chrome浏览器。对此我有几点建议:
- 您是否看过actions API,如中所述(它主要针对Java,但C#API非常类似)
- 您可以应用以下过程:
- 将元素滚动到视图中
- 找出它是否隐藏在页眉或页脚后面
- 向下滚动页眉高度,或向上滚动页脚高度
- 您可以获取它在页面中的绝对位置,然后滚动到那里
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'),元素);您粘贴的上述代码不会滚动到元素(以使其可见),因此无法工作。