selenium threading运行后退出_Selenium的使用
Selenium是一個(gè)自動(dòng)化測試工具,利用它可以模仿人類行為,如點(diǎn)擊、下滑、移動(dòng)鼠標(biāo)等,同時(shí)還能獲取網(wǎng)頁源碼
相關(guān)鏈接:https://www.selenium.dev/
目錄
1、準(zhǔn)備工作
2、基本示范
3、功能介紹
4、信息獲取
5、切換頁面
1、準(zhǔn)備工作
首先要確保安裝好selenium庫和對應(yīng)瀏覽器的驅(qū)動(dòng),若沒有安裝可以參考前面的文章——爬蟲開發(fā)環(huán)境部署
2、基本示范
這里用的是Chrome瀏覽器
from selenium import webdriverbrowser = webdriver.Chrome() browser.get('https://www.baidu.com') browser.quit() # 退出運(yùn)行代碼后會(huì)彈出一個(gè)百度的頁面
如果你用的發(fā)其他瀏覽器,比如Firefox就可以這樣寫
browser = webdriver.Firefox()3、功能介紹
- 3.1、請求網(wǎng)站
用get()方法請求網(wǎng)站,傳入一個(gè)url即可,同時(shí)我們可以調(diào)用page_source獲取源碼
from selenium import webdriverbrowser = webdriver.Chrome() browser.get('https://www.baidu.com') print(browser.page_source) # 獲取網(wǎng)頁源碼 browser.quit() # 退出- 3.2、單個(gè)節(jié)點(diǎn)查找
我們查找一下百度的輸入框
我們可以看到這個(gè)input標(biāo)簽內(nèi)有哪些內(nèi)容class、id、name,我們可以通過這些來定位這個(gè)位置,當(dāng)然也可以根據(jù)css、xpath來查找
from selenium import webdriverbrowser = webdriver.Chrome() browser.get('https://www.baidu.com') a = browser.find_element_by_class_name('s_ipt') b = browser.find_element_by_id('kw') c = browser.find_element_by_xpath('//input[@class="s_ipt"]') browser.quit() # 退出 print(a) print(b) print(c)輸出結(jié)果: <selenium.webdriver.remote.webelement.WebElement (session="3a9746646e68a7e5ddb24304cbd6c705", element="fa252264-5131-42a3-ac27-b393d51867c1")> <selenium.webdriver.remote.webelement.WebElement (session="3a9746646e68a7e5ddb24304cbd6c705", element="fa252264-5131-42a3-ac27-b393d51867c1")> <selenium.webdriver.remote.webelement.WebElement (session="3a9746646e68a7e5ddb24304cbd6c705", element="fa252264-5131-42a3-ac27-b393d51867c1")>我們可以發(fā)現(xiàn)都是一樣的
find_element_by_class_name()是根據(jù)class屬性查找find_element_by_id()就是根據(jù)id來查找
這里列出所有定位單個(gè)節(jié)點(diǎn)的方法,大家可以根據(jù)自己的習(xí)慣來選擇
- 3.3、節(jié)點(diǎn)交互
這里介紹幾個(gè)常用的功能:點(diǎn)擊、輸入文本、清空文本
點(diǎn)擊用click(),輸入文本用send_keys(),清楚文本用clear()
示例:
這里用百度搜索爬蟲
首先是要找到輸入框所在的HTML位置
我們可以輕松的找到它,在class為s_ipt的input標(biāo)簽下
輸入文本
browser.find_element_by_class_name('s_ipt').send_keys('爬蟲')清空文本
中間加個(gè)sleep,可以清楚看到全過程
browser.find_element_by_class_name('s_ipt').send_keys('爬蟲') time.sleep(1) browser.find_element_by_class_name('s_ipt').clear()最后點(diǎn)擊百度一下
browser.find_element_by_id('su').click()4、信息獲取
- 4.1、屬性獲取
既然可以定位節(jié)點(diǎn)那也可以獲取節(jié)點(diǎn)的屬性,可以調(diào)用get_attribute()
用上一個(gè)案例中的百度一下的按鈕吧
from selenium import webdriverbrowser = webdriver.Chrome() browser.get('https://www.baidu.com') a = browser.find_element_by_id('su') print(a.get_attribute('class')) browser.quit() # 退出運(yùn)行結(jié)果: bg s_btn 對比一下,一模一樣- 4.2、獲取文本
文本在class=“title”的span標(biāo)簽內(nèi)
from selenium import webdriverbrowser = webdriver.Chrome() browser.get('https://www.baidu.com') a = browser.find_element_by_class_name('title') print(a.text) browser.quit() # 退出運(yùn)行結(jié)果: 下載百度APP咦,怎么回事呢?
在網(wǎng)頁源碼中class=“title”的標(biāo)簽不唯一,但是它只會(huì)返回第一個(gè)符合條件的。那現(xiàn)在怎么辦呢?用xpath定位,右鍵點(diǎn)擊標(biāo)簽可以直接copy XPath規(guī)則
from selenium import webdriverbrowser = webdriver.Chrome() browser.get('https://www.baidu.com') a = browser.find_element_by_xpath('//*[@id="s_icons"]/a[2]/span[2]') print(a.text) browser.quit() # 退出但是直接報(bào)錯(cuò)了,原來是我打開的百度與驅(qū)動(dòng)器打開的百度設(shè)置不同。這里就用驅(qū)動(dòng)器打開的百度調(diào)試就好了。
這就對上了
5、切換頁面
第一次打開百度一下的頁面,第二次新建一個(gè)頁面打開知乎的官網(wǎng)
from selenium import webdriverbrowser = webdriver.Chrome() browser.get('https://www.baidu.com') browser.execute_script('window.open()') browser.switch_to.window(browser.window_handles[1]) browser.get('https://www.zhihu.com/signin?next=%2F') browser.quit() # 退出execute_script('window.open()')這個(gè)命令就是打開一個(gè)新的選項(xiàng)卡,switch_to.window()是切換到某個(gè)選項(xiàng)卡,這里是切換到第二個(gè)選項(xiàng)卡
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的selenium threading运行后退出_Selenium的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css 浮动在最上层_CSS的“层”峦“
- 下一篇: 仿个人税务 app html5_手机里发