本片文章拿百度首頁測試
一。id定位 : find_element_by_id()
example. find_element_by_id("kw") 定位輸入框
find_element_by_id("su") 定位百度一下按鈕
二。name定位 : find_element_by_name()
example. find_element_by_name("wd") 定位輸入框
三。class定位: find_element_by_class_name()
example. find_element_by_class_name("s_ipt") 定位輸入框
find_element_by_class_name("bg s_btn") 定位百度一下按鈕
四。tag(標籤)定位: find_element_by_tag_name()
example. find_element_by_tag_name("input") 你會發現,百度輸入框與百度按鈕的tag一樣,所以不好定位
一般定位方法不用find_element_by_tag_name()
五。link定位 : 此方法與其他定位方法不一樣,專門用於定位文本鏈接 find_elemnet_by_link_text()
example. find_element_by_link_text("新聞") 百度首頁右上角新聞按鈕
find_element_by_link_text(“hao123”) 百度首頁右上角hao123按鈕
此外。find_element_by_partial_link_text() 是對link定位的一個補充,很可能有些文本鏈接會比較長,這個時候這個partial_link就是截取部分文本鏈接
六。xpath定位: find_element_by_xpath("")
1.絕對路徑定位
如上圖find_element_by_xpath("/html/body/div[2]/div/div/div/div/form/input") 定位百度輸入框
xpath主要是用標籤名的層級關係來定位元素的絕對路徑。如果當前層級下有多個相同的標籤名,那麼按上下順序確定是第幾個。
2.利用元素屬性定位 :除了絕對路徑外,Xpath也可以用元素的屬性值來定位
以百度輸入框和搜索按鈕爲例
find_element_by_xpath("//input[@id="kw"]")
find_element_by_xpath("//input[@id="su"]")
//表示當前頁面某個目錄下,input表示定位元素的標籤名,@id="kw表示這個元素的id屬性值等於kw。元素的任意屬性值可以使用,只要它能唯一的標識一個元素,例如
find_element_by_xpath("//input[@autocomplete="off"]")
2.1 層級與屬性的結合
如果一個元素本身沒有可以唯一標識這個元素的屬性值,那麼我們可以找上一級元素,如果它的上一級元素有可以表示的唯一屬性值,也可以拿來使用。例如 find_element_by_xpath("//span[@class="bs s_ipt_wr"]/input")
七。CSS定位