當咱們想讓 Selenium 自動地操做瀏覽器時,就必須告訴 Selenium 如何去定位某個元素或一組元素,每一個元素都有着不一樣的標籤名和屬性值,Selenium 提供瞭如下8種定位元素的方式,每種方式對應了2個方法:
find_element_by_( ),是用來定位單個元素的,find_elements_by_( ),是用來定位多個元素的。css
下面以百度首頁爲例進行舉例說明:python
find_element_by_id(id)
find_elements_by_id(id)web
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位id爲「kw」的元素 input_text = driver.find_element_by_id("kw") input_text.send_keys("selenium") driver.quit()
find_element_by_name(name)
find_elements_by_name(name)segmentfault
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位name爲「wd」的元素 input_text = driver.find_element_by_name("wd") input_text.send_keys("selenium") driver.quit()
find_element_by_class_name(name)
find_elements_by_class_name(name)瀏覽器
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位class名稱爲「s_ipt」的元素 input_text = driver.find_element_by_class_name("s_ipt") input_text.send_keys("selenium") driver.quit()
find_element_by_tag_name(name)
find_elements_by_tag_name(name)ui
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位標籤爲<input>的元素 input_text = driver.find_elements_by_tag_name("input") print(len(input_text)) driver.quit()
find_element_by_link_text(link_text)
find_elements_by_link_text(link_text)url
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位連接文本徹底匹配「我新聞」的元素 news = driver.find_element_by_link_text("新聞") news.click() driver.quit()
find_element_by_partial_link_text(link_text)
find_elements_by_partial_link_text(link_text)code
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位連接文本部分匹配「新」的元素 news = driver.find_element_by_partial_link_text("新") news.click() driver.quit()
find_element_by_xpath(xpath)
find_elements_by_xpath(xpath)ip
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # xpath定位,相對路徑與屬性結合定位搜索框 news = driver.find_element_by_xpath("//input[@id='kw']") news.click() driver.quit()
find_element_by_css_selector(css_selector)
find_elements_by_css_selector(css_selector)utf-8
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # css選擇器,id定位密碼輸入框 news = driver.find_element_by_css_selector('#kw') news.click() driver.quit()
這裏只是簡單介紹了8種元素定位方式的使用,比較簡單易用的是經過id、name、class定位,我我的比較喜歡的是用xpath定位,固然,最靈活也是最強大的定位方式就是css,它也是比較難掌握的一種方式。關於xpath和css定位方式的詳細介紹,能夠參考
selenium 元素定位。