04、簡單的元素定位
阿新 • • 發佈:2020-09-19
一、by_id
1 from selenium import webdriver
2 import time
3 bf = webdriver.Chrome() #使用谷歌瀏覽器驅動
4 bf.maximize_window() #最大化視窗
5 bf.get("http://www.baidu.com") #開啟百度
6 bf.find_element_by_id("kw").send_keys("selemium") #ID定位輸入框並且輸入selenium,ID值是唯一的
7 time.sleep(2)
8 bf.quit()
二、by_name
1 bf.find_element_by_name(" wd").send_keys("python") #name定位並且輸入python
2 #取的是name的值,name不一定唯一
三、by_class_name
1 bf.find_element_by_class_name("s_ipt").send_keys("hello") #chass_name 定位並且輸入hello
2 #取的是class的值,by_class_name不一定唯一
四、by_tag_name
單數形式:頁面中唯一tag_name時使用,如果有多個,預設定位的第一個標籤
1 from selenium import webdriver
2 import time
3 bf = webdriver.Chrome() #使用谷歌瀏覽器驅動
4 bf.maximize_window() #最大化視窗
5 bf.get("http://www.baidu.com") #開啟百度
6 #單數形式
7 ele = bf.find_element_by_tag_name("input")#將tagname賦給ele變數
8 print(ele.get_attribute("outerHTML"))#列印ele變數的標籤
複數形式:當多個標籤相同元素時,得到所有元素,相當於得到一個列表,可以對列表(元素)進行操作
1 from selenium import webdriver
2 import time
3 bf = webdriver.Chrome() #使用谷歌瀏覽器驅動
4 bf.maximize_window() #最大化視窗
5 bf.get("http://www.baidu.com") #開啟百度
6 #複數形式
7 eles = bf.find_elements_by_tag_name("input")#定位所有的tagname標籤,相當於一個列表
8 print(len(eles)) #計數多少個eles標籤
9 for i in eles: #遍歷列印這些標籤
10 print(i.get_attribute("outerHTML"))
五、by_link_text超連結定位
該定位方式必須輸入超連結的全稱
1 from selenium import webdriver
2 import time
3 bf = webdriver.Chrome() #使用谷歌瀏覽器驅動
4 bf.maximize_window() #最大化視窗
5 bf.get("http://www.baidu.com") #開啟百度
6 bf.find_element_by_link_text("地圖").click()#超連結方式定位百度上方的地圖連結
7 time.sleep(2)
8 bf.quit()
六、by_partial_link_text
該定位方式可輸入超連結的簡稱,切簡稱必須是連續的,如百度地圖,可以輸入百度/地圖/度地,但是不能輸入百圖
1 from selenium import webdriver
2 import time
3 bf = webdriver.Chrome() #使用谷歌瀏覽器驅動
4 bf.maximize_window() #最大化視窗
5 bf.get("http://www.baidu.com") #開啟百度
6 bf.find_element_by_partial_link_text("地").click()#超連結方式定位百度上方的地圖連結
7 time.sleep(5)
8 bf.quit()