selenium元素操作、元素定位方式和元素八大定位法則
1、元素定位方式及元素操作(元素定位方式看習慣使用,推薦第一種)
1.1、元素定位方式一(此方式不需要匯入By類,相對簡單易用)
直接呼叫:driver.find_element_by_XX(value),如下例項
# 匯入模組 from selenium import webdriver # 建立一個瀏覽器物件 driver = webdriver.Firefox() # 訪問網址 url = 'http://www.baidu.com' driver.get(url) # 使用第一種方式定位輸入框 driver.find_element_by_css_selector('#kw') # 關閉瀏覽器 driver.quit()
1.2、元素定位方式二(此方式需要先匯入By類:from selenium.webdriver.common.by import By)
使用By型別(需要匯入By類):driver.find_element(By.XX,value),如下程式碼
# 匯入包 from selenium import webdriver from selenium.webdriver.common.by import By # 建立一個瀏覽器物件 driver = webdriver.Firefox() # 訪問地址 url = 'http://www.baidu.com' driver.get(url) # 使用第二種方式定位搜尋框 driver.find_element(By.CSS_SELECTOR,'#kw') # 關閉瀏覽器 driver.quit()
1.3、元素操作(點選、輸入、清空輸入、提交)
點選:element.click()
輸入:element.send_keys(value)
清空輸入框:element.clear()
提交:element.submit()
# 匯入包 from selenium import webdriver import time # 建立一個瀏覽器物件,訪問百度 driver = webdriver.Firefox() driver.get('http://www.baidu.com') # 定位輸入框後輸入搜尋內容,點選搜尋 # 使用css定位 shu = driver.find_element_by_css_selector('#kw') # 輸入搜尋內容 shu.send_keys('特戰隊') time.sleep(1)# 意思是休眠一秒 # 清空輸入框 shu.clear() time.sleep(1) # 重新輸入 shu.send_keys('渣渣輝') time.sleep(1) # 定位搜尋按鈕 ss = driver.find_element_by_css_selector('#su') # 點選搜尋 ss.click()# 這裡也可以使用submit()提交來點選操作 time.sleep(1) # 關閉瀏覽器 driver.quit()
1.4、元素資訊的獲取
獲取元素的文字內容:element.text
獲取元素某個屬性的值:element.get_attribute(value)
獲取元素的尺寸:element.size
獲取元素的是否可見:element.is_displayed()
# 匯入包 from selenium import webdriver import time # 建立一個瀏覽器物件,訪問百度 driver = webdriver.Firefox() driver.get('http://www.baidu.com') # 定位到元素 hao = driver.find_element_by_css_selector('a.mnav:nth-child(2)') # 獲取文字內容和此元素某個屬性的值(\n為換行) print('文字內容為:',hao.text,'\nhref屬性值',hao.get_attribute('href')) # 獲取元素的尺寸和元素是否可見 print('元素尺寸:',hao.size,'\n元素是否可見:',hao.is_displayed()) # 關閉瀏覽器 driver.quit()
2、元素八大定位法則
2.1、ID(定位)
2.2、name(屬性值定位)
2.3、class name(偽類名定位)
2.4、tag name(標籤名定位)
2.5、link text(連結文字定位)
2.6、partail link text(部分連結文字定位)
2.7、xpath(路徑表示式定位)
2.8、css selector(css選擇器定位)
# 匯入包 from selenium import webdriver import time # 建立一個瀏覽器物件,訪問百度 driver = webdriver.Firefox() driver.get('http://www.baidu.com') # ID定位(當某個元素有id值的時候,可以用此方法定位) driver.find_element_by_id('kw') # name定位(當某個元素擁有name值,且值為唯一,可以用此方式定位) driver.find_element_by_name('wd') # tag name定位(若某個元素標籤名唯一,可以使用此方式) driver.find_element_by_tag_name('input') # class name定位(當某個元素有class name且唯一,可用此方式) driver.find_element_by_class_name('s_ipt') # 連結文字定位(欲定位某個連結元素,可以清楚看見其文字內容,可使用此方式) driver.find_element_by_link_text('百度一下') # 部分連結文字定位(某個連結元素文字只能看清部分內容,且此部分文字內容唯一,可用此方式) driver.find_element_by_partial_link_text('度一下') # xpath定位(可以任意定位任何元素,此方式表示式不能有錯) driver.find_element_by_xpath(".//*[@id='kw']") # css定位(此方式定位可以直接使用瀏覽器自帶檢視元素複製唯一 選擇器【Chrome為copy selector】) driver.find_element_by_css_selector('#su') # 關閉瀏覽器 driver.quit()
此八種方式無優劣之分,只有看定位的元素是否方便,或看個人使用習慣使用
八種方式中xpath和css都較常用,懂其一即可,看習慣使用,前面六種在某些情況下不一定可以成功定位,所有需要多懂幾種以免有自己掌握的方式定位不了的情況