你在做下面的練習(xí)之前應(yīng)該具備
我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、福鼎ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的福鼎網(wǎng)站制作公司
安裝好chrome,并通過chrome://version確認(rèn)其版本號
安裝chromedriver并與你的chrome版本相匹配,下載路徑如下
https://registry.npmmirror.com/binary.html?path=chromedriver/
你應(yīng)該有一個(gè)python+ide(如pycharm)的環(huán)境,反正下面的示例是用這些來完成的。
下好requests庫,對語法不再闡述
本質(zhì)上是個(gè)web server
在命令行啟動chromedriver應(yīng)該是如下提示
cmd>chromedriver.exe
Starting ChromeDriver 100.0.4896.20 (f9d71f93d32ad6f35a9670c879fe97dfe-refs/branch-heads/4896@{#203}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
放在那里不要關(guān)閉哦~
參閱:6.5的endpoint部分
https://w3c.github.io/webdriver/#endpoints
我就不封裝了,你有興趣自行封裝
Method | URI Template | Command |
---|---|---|
POST | /session | New Session |
示例代碼:以chrome為例
import requests
server_url = 'http://127.0.0.1:9515/session'
session_data = {
'desiredCapabilities':{
"caps":{"browserName":"chrome"} #此處可以變更瀏覽器類型,前提你啟動了對應(yīng)的chromedriver或者geckodriver等。
}
}
session_req = requests.post(url=server_url,json=session_data) #json傳遞
是不是相當(dāng)于selenium的api
from selenium import webdriver
driver = webdriver.Chrome()
區(qū)別是?不需要安裝selenium就可以通過api來調(diào)用了,當(dāng)然會更麻煩,人家給你封裝好了。
Method | URI Template | Command |
---|---|---|
POST | /session | New Session |
POST | /session/{session id}/url | Navigate To |
示例代碼
import requests
from time import sleep
server_url = 'http://127.0.0.1:9515/session' #這個(gè)url不能以/結(jié)尾
session_data = {
'desiredCapabilities':{
"caps":{"browserName":"chrome"}
}
}
session_req = requests.post(url=server_url,json=session_data) #此處不能是data
# 打開網(wǎng)址
session_id = session_req.json().get('sessionId') #首先要獲取sessionId,是后面操作的根基
dest_url = 'http://121.41.14.39:8088/index.html#/' #比如你要打開這個(gè)網(wǎng)址
get_url_data = {'url':dest_url} #字典形式
requests.post(server_url+'/'+session_id+'/url',json=get_url_data) #注意url的格式,跟ep對比
是不是類似于selenium中的driver.get()
Method | URI Template | Command |
---|---|---|
POST | /session | New Session |
POST | /session/{session id}/url | Navigate To |
POST | /session/{session id}/element | Find Element |
POST | /session/{session id}/element/{element id}/click | Element Click |
POST | /session/{session id}/element/{element id}/value | Element Send Keys |
示例代碼
import requests
from time import sleep
#登錄
# 1. 打開瀏覽器
server_url = 'http://127.0.0.1:9515/session' #這個(gè)url不能以/結(jié)尾
session_data = {
'desiredCapabilities':{
"caps":{"browserName":"chrome"}
}
}
session_req = requests.post(url=server_url,json=session_data) #此處不能是data
# 2. 輸入網(wǎng)址
session_id = session_req.json().get('sessionId')
dest_url = 'http://106.14.1.150:8090/forum.php' #這是我在阿里云部署的一個(gè)服務(wù)器
get_url_data = {'url':dest_url}
requests.post(server_url+'/'+session_id+'/url',json=get_url_data)
# 簡單封裝下
def get_eid(url,sid,method,method_value): #獲取elementid
data = {'using':method,'value':method_value}
return requests.post(url+'/'+sid+'/element',json=data).json().get('value').get('ELEMENT')
def input_text(url,sid,eid,text): #在指定的元素上輸入內(nèi)容
data = {'value':[text]}
requests.post(url+'/'+sid+'/element/'+eid+'/value', json=data)
def click_element(url,sid,eid): #點(diǎn)擊指定的元素
requests.post(url + '/' + sid + '/element/' + eid + '/click')
# 3. 輸入用戶名
# 3.1 獲取用戶名元素的elementid,通過id方式,其值為ls_username
username_id = get_eid(server_url,session_id,'id','ls_username')
input_text(server_url,session_id,username_id,'ruru023')
sleep(2)
# 3.2 獲取密碼元素的elementid,通過id方式,其值為ls_password
password_id = get_eid(server_url,session_id,'id','ls_password')
input_text(server_url,session_id,password_id,'')
sleep(2)
# 3.3 獲取登錄按鈕元素的elementid,通過css selector方式,其值為.pn.vm
login_button_id = get_eid(server_url,session_id,'css selector','.pn.vm')
click_element(server_url,session_id,login_button_id)
類似于seleniumapi中的