此前使用webdriver對瀏覽器進行了一些基本操作,可以說是基本接觸了這個工具了,接下來就應該做更多事情了。
打開了網頁,接下來就需要對網頁中的內容進行操作了,例如定位網頁中的元素、讀取網頁元素中的內容、對內容進行操作。
定位元素
selenium提供了多種方式進行定位元素: find_element_by_*
1 find_element_by_id 2 find_element_by_name 3 find_element_by_xpath 4 find_element_by_link_text 5 find_element_by_partial_link_text 6 find_element_by_tag_name 7 find_element_by_class_name 8 find_element_by_css_selector
當然也可以一次定位多個元素: find_elements_by_*
1 find_elements_by_name 2 find_elements_by_xpath 3 find_elements_by_link_text 4 find_elements_by_partial_link_text 5 find_elements_by_tag_name 6 find_elements_by_class_name 7 find_elements_by_css_selector
因為id是唯一的,所以一次定位多個元素是沒有辦法通過id進行定位的。
同樣,可以通過 find_element 和 find_elements ,不過使用之前需要導入by類, from selenium.webdriver.common.by import By 。
# coding = utf-8 import time from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 打開一個網頁 driver.get("https://www.zhihu.com/") # 查找一個元素的方法 ele = driver.find_element_by_xpath( '//*[@id="root"]/div/div[2]/header/div/nav/a[2]') ele.click() # 點擊已定位的元素 driver.back() # 退回 time.sleep(5) ele = driver.find_element( By.XPATH, '//*[@id="root"]/div/div[2]/header/div/nav/a[2]') # ID = "id" # XPATH = "xpath" # LINK_TEXT = "link text" # PARTIAL_LINK_TEXT = "partial link text" # NAME = "name" # TAG_NAME = "tag name" # CLASS_NAME = "class name" # CSS_SELECTOR = "css selector" ele.click() driver.back() # 查找多個元素的方法 eles = driver.find_elements_by_class_name("Feed") print(eles) print(len(eles)) time.sleep(5) eles = driver.find_elements(By.CLASS_NAME, 'Feed') # XPATH = "xpath" # LINK_TEXT = "link text" # PARTIAL_LINK_TEXT = "partial link text" # NAME = "name" # TAG_NAME = "tag name" # CLASS_NAME = "class name" # CSS_SELECTOR = "css selector" print(eles) print(len(eles)) driver.quit()
以上就是定位元素的一些方法。說明下xpath是比較好用的方式,之后可以多多練習使用xpath進行定位元素。