2017-06-03 117 views
0

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

尝试以下解决方案:

1)ScrollIntoView(真),则隐藏网络元件后面标头如果元件是向上并试图从底部滚动。

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

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

请让我知道是否有任何单一的代码,即使它的头/页脚目前,使元素可见。查找解决方案是C#和使用铬浏览器。

回答

0

我有几个建议是:

  • 你有没有看行动API,如this post(这主要是针对Java的,但C#API非常相似)
  • 你描述可能适用下列程序:

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

+0

谢谢@AZWN的响应,请你能告诉我你的代码元素背后隐藏页眉/页脚决定如何弥补/向下作出可见。请你可以发布代码。请帮助我解决这个问题**您可以在页面中获取它的绝对位置,并滚动到那里。** – Raks

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

感谢您的回复@Ankur,如果页眉/页脚出现,操作API也会出现同样的问题(上面的解释)。所以你不能使用这个。我已经尝试过了。 – Raks

+0

尝试使用JavaScriptExecuter显示make元素,然后对此执行操作。类似像这样 - JavascriptExecutor js =(JavascriptExecutor)驱动程序; WebElement element = driver.findElement(By.id(“element”)); js。executeScript(“arguments [0] .setAttribute('style','z-index:-1')”,element); – Ankur

+0

让我知道这是否有效。 – Ankur