selenium腳本編寫
上篇文章介紹了selenium環(huán)境搭建,搭建好之后就可以開(kāi)始寫代碼了
基礎(chǔ)腳本,打開(kāi)一個(gè)網(wǎng)址
from selenium import webdriver
driver = webdriver.Chrome()#打開(kāi)chrome瀏覽器
driver.get('https://www.baidu.com') #打開(kāi)百度
打開(kāi)本地HTML文件
上篇文章我自己寫了一個(gè)html文件,放在了當(dāng)前路徑下
- 第一種方式
通過(guò)絕對(duì)路徑打開(kāi)
from selenium import webdriver
driver = webdriver.Chrome()#打開(kāi)chrome瀏覽器
driver.get(r'D:\sele_study\2-selenium\day1_sele\test.html')
- 第二種方式
通過(guò)相對(duì)路徑打開(kāi)
本質(zhì)上也是通過(guò)方法把相對(duì)路徑轉(zhuǎn)為絕對(duì)路徑
#第一種轉(zhuǎn)為絕對(duì)路徑的方法
from selenium import webdriver
from pathlib import Path#pathlib:路徑處理庫(kù)
driver = webdriver.Chrome()#打開(kāi)chrome瀏覽器
html = Path('./test.html')
driver.get(str(html.resolve()))#Path.resolve:該方法將一些的 路徑/路徑段 解析為絕對(duì)路徑
#第二種轉(zhuǎn)為絕對(duì)路徑的方法
from selenium import webdriver
import os
html = os.path.abspath('./test.html')#返回絕對(duì)路徑
driver = webdriver.Chrome()
driver.get(html)
優(yōu)雅地打開(kāi)瀏覽器(with)
用with打開(kāi)瀏覽器,不用手工關(guān)閉
from selenium import webdriver
from time import sleep
with webdriver.Chrome() as driver:#with上下文管理器,不需要我去關(guān)閉
driver.get('https://www.baidu.com')#打開(kāi)百度
sleep(5)#等5秒,自動(dòng)關(guān)閉
認(rèn)識(shí)webdriver對(duì)象方法和屬性
初識(shí)元素定位方法
#祖宗方法
find_element
#通過(guò)class屬性的值定位(底層是css)
find_element_by_class_name
#√√√通過(guò)css 選擇器定位(推薦,最快)
find_element_by_css_selector
#√通過(guò)id的值定位(底層是css)
find_element_by_id
#√通過(guò)a標(biāo)簽的文本定位(底層是XPATH)
find_element_by_link_text
#通過(guò)name屬性的值來(lái)定位(底層是css)
find_element_by_name
#通過(guò)a標(biāo)簽的部分文本定位(模糊匹配)(底層是XPATH)
find_element_by_partial_link_text
#通過(guò)標(biāo)簽名來(lái)定位(底層是css)
find_element_by_tag_name
#√√通過(guò)xpath方法定位(慢)
find_element_by_xpath
#以下方法的用法同上,只是返回的是一組元素(列表形式)
find_elements
find_elements_by_class_name
find_elements_by_css_selector
find_elements_by_id
find_elements_by_link_text
find_elements_by_name
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_xpath
除了祖宗方法,其他八種定位方式被大家稱為‘selenium八大元素定位’
可以配合HTML全局屬性介紹來(lái)理解這些方法。
HTML全局屬性介紹:https://www.w3school.com.cn/tags/html_ref_standardattributes.asp
用法示例
以下方法演示用的是我們上篇文章寫的HTML文件
需要的朋友可以去上篇文章復(fù)制或公眾號(hào)后臺(tái)輸入‘html練習(xí)’獲取源文件
find_element_by_name
通過(guò)name屬性的值來(lái)定位
from selenium import webdriver
from pathlib import Path
from time import sleep
with webdriver.Chrome() as driver:#打開(kāi)chrome瀏覽器
html = Path('./test.html')
driver.get(str(html.resolve()))#Path.resolve:該方法將一些的 路徑/路徑段 解析為絕對(duì)路徑
driver.find_element_by_name('username').send_keys('admin')
#找到name的值為'username'的標(biāo)簽,并輸入'admin'
sleep(5)#5秒后關(guān)閉
知識(shí)點(diǎn):
1.如果遇到重復(fù)的元素,操作的永遠(yuǎn)是第一個(gè)
2.send_keys方法,不會(huì)清空原來(lái)的內(nèi)容
- find_element_by_id
通過(guò)id的值定位
from selenium import webdriver
import os
from time import sleep
with webdriver.Chrome() as driver:
html = os.path.abspath('./test.html')#獲取絕對(duì)路徑
driver.get(html)
driver.find_element_by_id('username').send_keys('admin')
#找到id的值為'username'的標(biāo)簽,并輸入'admin'
sleep(5)
知識(shí)點(diǎn):
1.id是唯一的
2.可能會(huì)變,需要注意識(shí)別
3.首字符是數(shù)字的要注意css的表達(dá)式(后續(xù)詳細(xì)介紹)
- find_element_by_class_name
通過(guò)class屬性的值定位
from selenium import webdriver
import os
from time import sleep
with webdriver.Chrome() as driver:
html = os.path.abspath('./test.html')#獲取絕對(duì)路徑
driver.get(html)
# 1. 輸入用戶名
driver.find_element_by_class_name('aa').send_keys('admin')
#找到class的值為'aa'的標(biāo)簽,并輸入'admin'
# 2. 輸入密碼
# driver.find_element_by_class_name('bb cc').send_keys('123456')--錯(cuò)誤寫法
driver.find_element_by_class_name('bb').send_keys('pass')
#找到class的值為'bb'的標(biāo)簽,輸入'pass'
driver.find_element_by_class_name('cc').send_keys('word')
#找到class的值為'cc'的標(biāo)簽,輸入'word'
sleep(5)
知識(shí)點(diǎn):
1.class也容易重復(fù)
2.class ='bb cc'規(guī)定元素的一個(gè)或多個(gè)類名,等同于class1,class2='bb','cc'
所以不能直接用driver.find_element_by_class_name('bb cc')
find_element_by_link_text
通過(guò)a標(biāo)簽的全文本定位,需要文本完全匹配
from selenium import webdriver
import os
from time import sleep
with webdriver.Chrome() as driver:
html = os.path.abspath('./test.html')#獲取絕對(duì)路徑
driver.get(html)
driver.find_element_by_link_text('百度一下,你就不知道').click()
#找到文本為'百度一下,你就不知道'文本的a標(biāo)簽,并點(diǎn)擊
sleep(5)#等待5秒關(guān)閉
- find_element_by_partial_link_text
通過(guò)a標(biāo)簽的部分文本定位(模糊匹配)
#方法二:模糊匹配
from selenium import webdriver
import os
from time import sleep
with webdriver.Chrome() as driver:
html = os.path.abspath('./test.html')#獲取絕對(duì)路徑
driver.get(html)
driver.find_element_by_partial_link_text('必應(yīng)').click()
#找到包含'必應(yīng)'文本的a標(biāo)簽,并點(diǎn)擊
sleep(5)#等待5秒關(guān)閉
知識(shí)點(diǎn):
1.link_text 的兩種定位方式只適用于a標(biāo)簽的文本
2.link_text 完全匹配
3.parti_link_text 部分(模糊)可以是開(kāi)頭是、包含、結(jié)尾是
4.click()點(diǎn)擊
find_element_by_tag_name
通過(guò)標(biāo)簽名來(lái)定位,因?yàn)橹貜?fù)特別多,所以很少用,不做介紹。
find_element_by_css_selector
通過(guò)css 選擇器定位(推薦,最快)
內(nèi)容比較多且重要,之后單獨(dú)文章做介紹。
find_element_by_xpath
通過(guò)xpath方法定位
內(nèi)容比較多且重要,之后文章單獨(dú)介紹。
總結(jié):
感謝每一個(gè)認(rèn)真閱讀我文章的人!?。?/strong>
作為一位過(guò)來(lái)人也是希望大家少走一些彎路,如果你不想再體驗(yàn)一次學(xué)習(xí)時(shí)找不到資料,沒(méi)人解答問(wèn)題,堅(jiān)持幾天便放棄的感受的話,在這里我給大家分享一些自動(dòng)化測(cè)試的學(xué)習(xí)資源,希望能給你前進(jìn)的路上帶來(lái)幫助。
文檔獲取方式:
加入我的軟件測(cè)試交流群:1007119548免費(fèi)獲取~(同行大佬一起學(xué)術(shù)交流,每晚都有大佬直播分享技術(shù)知識(shí)點(diǎn))
這份文檔,對(duì)于想從事【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴我走過(guò)了最艱難的路程,希望也能幫助到你!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-794953.html
以上均可以分享,只需要你搜索vx公眾號(hào):程序員雨果,即可免費(fèi)領(lǐng)取文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-794953.html
到了這里,關(guān)于selenium腳本編寫及八大元素定位方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!