webdriver隱藏元素的處理(一)
阿新 • • 發佈:2019-02-14
在用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 獲取基於指定元素名稱的物件集合。
如果要定位的頁面元素沒有這些兒屬性,定位或操作的時候就會相對麻煩一點兒,這也是權宜之計,以後有什麼好的方法,再跟大家分享。
結合我自己的調式,用直接執行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 獲取基於指定元素名稱的物件集合。
如果要定位的頁面元素沒有這些兒屬性,定位或操作的時候就會相對麻煩一點兒,這也是權宜之計,以後有什麼好的方法,再跟大家分享。