web頁面不可見的元素雖不在頁面上顯示,但是存在於DOM樹中,這些元素webdriver也能找到。
element.is_displayed()方法可以判斷元素是否在頁面上顯示,如果顯示返回True,否則返回False。
用於測試的HTML代碼:
<html> <head> <title>HTML中顯示與隱藏元素</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> function showAndHidden1(){ var div1=document.getElementById("div1"); var div2=document.getElementById("div2"); if(div1.style.display=='block') div1.style.display='none'; else div1.style.display='block'; if(div2.style.display=='block') div2.style.display='none'; else div2.style.display='block'; } function showAndHidden2(){ var div3=document.getElementById("div3"); var div4=document.getElementById("div4"); if(div3.style.visibility=='visible') div3.style.visibility='hidden'; else div3.style.visibility='visible'; if(div4.style.visibility=='visible') div4.style.visibility='hidden'; else div4.style.visibility='visible'; } </script> </head> <body> <div>display:元素不占用頁面位置</div> <div id="div1" style="display:block;">DIV 1</div> <div id="div2" style="display:none;">DIV 2</div> <input id="button1" type="button" onclick="showAndHidden1();" value="DIV切換" /> <hr> <div>visibility:元素占用頁面位置</div> <div id="div3" style="visibility:visible;">DIV 3</div> <div id="div4" style="visibility:hidden;">DIV 4</div> <input id="button2" type="button" onclick="showAndHidden2();" value="DIV切換" /> </body> </html>
調用API的代碼
# encoding=utf-8 import unittest import time from selenium import webdriver class VisitUrl(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path="e:\\chromedriver") def test_getWebElementIsDisplayed(self): # 訪問自定義的html網頁 self.driver.get( "http://127.0.0.1/test_visible.html") # 通過id="div2"找到第二個div元素 div2 = self.driver.find_element_by_id("div2") # 判斷第二個div元素是否在頁面上可見 print div2.is_displayed() # 點擊第一個切換div按鈕,將第二個div顯示在頁面上 self.driver.find_element_by_id("button1").click() # 再次判斷第二個div元素是否可見 print div2.is_displayed() # 通過id="div4"找到第四個div元素 div4 = self.driver.find_element_by_id("div4") # 判斷第四個div元素是否在頁面上可見 print div4.is_displayed() def tearDown(self): self.driver.quit() if __name__ == '__main__': unittest.main()