Selenium3自動化測試【16】元素定位之Tag

tag name方法是經過對HTML頁面中tag name匹配方式來定位元素的。相似與JavaScript中的getElementsByTagName()。
tag name方法在某些特定場合下十分有用,例如,經過標籤<checkbox>的tag name能夠一次性定位到頁面中的全部複選框元素。html

1. 經過tag name定位Bing案例

依舊使用Bing首頁的搜索框爲例。
例:find_element_by_tag_name("input").send_keys("1234")。
Selenium3自動化測試【16】元素定位之Tag
搜索框元素的屬性描述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">

2. 經過tag name定位一組元素案例

在實際過程當中,可經過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頁面的展示效果如圖所示。
Selenium3自動化測試【16】元素定位之Tagui

經過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

Selenium3自動化測試【16】元素定位之Tag

相關文章
相關標籤/搜索