第一章 Selenium+WebDriver環(huán)境搭建
第二章 Selenium定位方式
第三章 元素常用屬性
第四章 自動(dòng)化中的三種等待
第五章 自動(dòng)化瀏覽器設(shè)置及句柄、窗口切換操作
第六章 鼠標(biāo)、鍵盤操作
第七章 javascript在自動(dòng)化中的應(yīng)用
第八章 unittest&斷言
第九章 ddt數(shù)據(jù)驅(qū)動(dòng)
第十章 測(cè)試框架搭建過程Python+Selenium+BeautifulReport
一、WebDriver常用的八種定位方式
| 常用定位方式 | 對(duì)應(yīng)Python中的方法 | selenium4最新寫法(關(guān)于find_element_by_id被劃線)需要導(dǎo)包from selenium.webdriver.common.by import By |
|---|---|---|
| ID | find_element_by_id() | find_element(by=By.ID, value="") |
| XPATH | find_element_by_xpath() | find_element(By.XPATH, value="") |
| LINK_TEXT | find_element_by_link_text() | find_element(By.LINK_TEXT, value="") |
| PARTIAL_LINK_TEXT | find_element_by_partial_link_text() | find_element(By.PARTIAL_LINK_TEXT, value="") |
| NAME | find_element_by_name() | find_element(By.NAME, value="") |
| TAG_NAME | find_element_by_tag_name() | find_element(By.TAG_NAME, value="") |
| CLASS_NAME | find_element_by_class_name() | find_element(By.CLASS_NAME, value="") |
| CSS_SELECTOR | find_element_by_css_selector() | find_element(By.CSS_SELECTOR, value="") |
注意:selenium4版本后,對(duì)應(yīng)第二欄中的方法已經(jīng)廢棄,可以導(dǎo)By包,使用第三欄中的方法。
二、定位方式總結(jié)
1、id、name、class_name、tag_name:根據(jù)元素的標(biāo)簽或元素的屬性進(jìn)行定位
2、link_text、partial_link_text:根據(jù)超鏈接的文本進(jìn)行定位
3、xpath:根據(jù)元素路徑定位
4、css:根據(jù)css選擇器定位
三、定位方式實(shí)操
1、id定位
例如百度的百度一下按鈕,id如圖:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #瀏覽器實(shí)例化
driver.get("http://www.baidu.com") #打開網(wǎng)頁
time.sleep(3)
driver.find_element(By.ID, "su").click() #通過id找到按鈕元素,并點(diǎn)擊一下
time.sleep(3)
driver.quit() #退出瀏覽器
2、name定位
例如百度的更多按鈕,如圖:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #瀏覽器實(shí)例化
driver.get("http://www.baidu.com") #打開網(wǎng)頁
time.sleep(3)
driver.find_element(By.NAME, "tj_briicon").click() #通過name找到按鈕元素,并點(diǎn)擊一下
time.sleep(3)
driver.quit() #退出瀏覽器
3、class_name定位
例如百度的搜索輸入框,找到元素并填入搜索詞,html里的class屬性即為class_name元素,如圖:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #瀏覽器實(shí)例化
driver.get("http://www.baidu.com") #打開網(wǎng)頁
time.sleep(3)
driver.find_element(By.CLASS_NAME, "s_ipt").send_keys("test") #通過CLASS_NAME找到輸入框元素,并輸入搜索詞
time.sleep(3)
driver.quit() #退出瀏覽器
4、tag_name定位
注意,tag_name是通過標(biāo)簽名來定位,獲取到的元素可能為多個(gè),不唯一。定位效率低,不建議使用此定位方式。

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #瀏覽器實(shí)例化
driver.get("https://www.jd.com/") #打開網(wǎng)頁
time.sleep(3)
driver.find_element(By.TAG_NAME, "input").send_keys("手機(jī)") #通過TAG_NAME找到輸入框元素,并輸入搜索詞
time.sleep(3)
driver.quit() #退出瀏覽器
5、link_text定位
link_text與前面的有所不同,它專門用來定位超鏈接為本(<a>文本值</a>)

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #瀏覽器實(shí)例化
driver.get("https://www.baidu.com/") #打開網(wǎng)頁
time.sleep(3)
driver.find_element(By.LINK_TEXT, "新聞").click() #通過LINK_TEXT找到元素,并點(diǎn)擊
time.sleep(3)
driver.quit() #退出瀏覽器
6、partial_link_text定位
partial_link_text定位是對(duì)link_text的補(bǔ)充,partial_link_text為模糊匹配,例如:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #瀏覽器實(shí)例化
driver.get("http://news.baidu.com/") #打開網(wǎng)頁
time.sleep(3)
driver.find_element(By.PARTIAL_LINK_TEXT, "北京").click() #通過PARTIAL_LINK_TEXT找到包含"北京"的任一條新聞,并點(diǎn)擊
time.sleep(3)
driver.quit() #退出瀏覽器
7、xpath路徑定位(絕對(duì)/相對(duì)路徑)
7.1、xpath絕對(duì)路徑定位
①絕對(duì)路徑以/開始,如:/html/body/div[1]/div[1]/div[3]/a[6]
②通過瀏覽器查看元素屬性,右擊復(fù)制xpath快速生成,copy full XPATH
7.2、xpath性對(duì)路徑定位
①相對(duì)路徑以//開始,如://*[@id="s-top-left"]/a[6]
②通過瀏覽器查看元素屬性,右擊復(fù)制xpath快速生成,copy XPATH
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #瀏覽器實(shí)例化
driver.get("http://www.baidu.com/") #打開網(wǎng)頁
time.sleep(3)
driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]').click() #通過xpath找到元素,并點(diǎn)擊,注意因?yàn)槁窂街杏须p引號(hào),需要將外面改成單引號(hào)
time.sleep(3)
driver.quit() #退出瀏覽器
8、css定位
css概述:
①、css是一種語言,它用來描述HTML和XML的元素顯示樣式。
②、css語言中有css選擇器,在selenium中也可以使用這種選擇器來進(jìn)行元素定位。
③、css定位方式比xpath快,而且css的語法非常強(qiáng)大,推薦使用該方式。
css定位策略:
①、id選擇器
②、class選擇器
③、元素選擇器
④、屬性選擇器
⑤、層級(jí)選擇器
隨手點(diǎn)贊一次,運(yùn)氣增加一份。