tag name方法是經過對HTML頁面中tag name匹配方式來定位元素的。相似與JavaScript中的getElementsByTagName()。
tag name方法在某些特定場合下十分有用,例如,經過標籤<checkbox>的tag name能夠一次性定位到頁面中的全部複選框元素。html
依舊使用Bing首頁的搜索框爲例。
例:find_element_by_tag_name("input").send_keys("1234")。
搜索框元素的屬性描述HTML代碼以下,能夠觀察到該元素的標籤是<input>:web
<input class="b_searchbox" id="sb_form_q" name="q" title="輸入搜索詞" type="search" value="" maxlength="100" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" aria-controls="sw_as" aria-autocomplete="both" aria-owns="sw_as">
Selenium經過FireFox瀏覽器驅動操做輸入框的代碼以下:api
from selenium import webdriver driver= webdriver.Firefox() driver.get("https://cn.bing.com/") driver.find_element_by_tag_name("input").send_keys("bella") driver.quit() # 關閉瀏覽器
可是經過標籤名的定位方式,要慎用,若是可以不適用仍是儘可能不用,由於一個頁面有大量重複的標籤名,容易形成混亂,從而使Selenium沒法找到正確的元素。
Bing首頁的輸入框和搜索按鈕都是input標籤,雖然前面的代碼可以成功的執行且在輸入框中成功鍵入了Bella,可是該案例具備必定的偶然性(是因爲輸入框元素是第1個input標籤的緣故)。換成其它案例,就未必可以成功執行了。瀏覽器
====搜索框元素====app
<input class="b_searchbox" id="sb_form_q" name="q" title="輸入搜索詞" type="search" value="" maxlength="100" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" aria-controls="sw_as" aria-autocomplete="both" aria-owns="sw_as">
====Bing首頁的搜索按鈕====ide
<input type="submit" class="b_searchboxSubmit" id="sb_form_go" tabindex="0" name="go">
在實際過程當中,可經過tag name定位一組元素。經過html語言簡單編寫了checkbox.html文件。checkbox.html頁面的html代碼以下(本書提供的資料裏也會提供該案例)。測試
<html> <head> <title>複選框測試實例</title> </head> <body> 請選擇你喜好的水果</br> <input type="checkbox" name="fruit" value ="apple" >蘋果<br> <input type="checkbox" name="fruit" value ="orange">桔子<br> <input type="checkbox" name="fruit" value ="mango">芒果<br> </body> </html>
checkbox.html頁面的展示效果如圖所示。ui
經過checkbox.html頁面的html代碼能夠看到3個複選框的標籤都是<input>標籤。
案例要求:
設計Selenium程序,實現同時選中3種水果的複選框。
代碼以下:設計
from selenium import webdriver from time import sleep driver = webdriver.Firefox() driver.get("file:///D:/checkbox.html") #checkbox.html的路徑要根據本身的實際狀況調整 inputs = driver.find_elements_by_tag_name("input") for i in inputs: # 經過看源代碼,使用type或name都可,由於三種水果這3個元素,這2個屬性均相同 if i.get_attribute("type") == "checkbox": #if i.get_attribute("name") == "fruit": i.click() sleep(3) driver.quit()
經過上面的代碼,能夠看到是經過find_elements_by_tag_name方法定位了全部標籤爲<input>的元素。3d
(https://edu.51cto.com/lecturer/968349.html)
圖書京東、噹噹有售
京東:https://item.jd.com/12784287.html
噹噹:http://product.dangdang.com/29177828.html