1. 程式人生 > 實用技巧 >selenium元素操作、元素定位方式和元素八大定位法則

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都較常用,懂其一即可,看習慣使用,前面六種在某些情況下不一定可以成功定位,所有需要多懂幾種以免有自己掌握的方式定位不了的情況