2017-06-03 48 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