1. 程式人生 > >webdriver隱藏元素的處理(一)

webdriver隱藏元素的處理(一)

在用webdriver做自動化測試的過程中,如果對頁面上的隱藏元素,如下拉列表或是浮層進行操作的時候,常常會遇到:"org.openqa.selenium.ElementNotVisibleException:Element is not currently visible and so may not be interactedwith"提示。但是我們用isPresentByXpath()等測試當前元素的時候,返回值為True。在網上搜索了一下解決辦法,請參考:http://nitinpurswani.blogspot.com/2010/09/elementnotvisible-exception-in-selenium.html

  結合我自己的調式,用直接執行JS對應的操作比較方便。

   (1)對浮層進行輸入文字
    JavascriptExecutor j= (JavascriptExecutor)driver;
    j.executeScript("document.findElementById('123').style.display='block';");
    然後再WebElement.sendKeys ("The words you want to type");

   (2)執行浮層上的操作,如單擊
    JavascriptExecutor j= (JavascriptExecutor)driver;
    j.executeScript("document.findElementById('123').click() ");

   當然Document的很多方法都可以用來定位:
   (1)getElementById 獲取對 ID 標籤屬性為指定值的第一個物件的引用。
   (2)getElementsByName 根據 NAME 標籤屬性的值獲取物件的集合。
   (3)getElementsByTagName 獲取基於指定元素名稱的物件集合。
    
   如果要定位的頁面元素沒有這些兒屬性,定位或操作的時候就會相對麻煩一點兒,這也是權宜之計,以後有什麼好的方法,再跟大家分享。