準備作業
-
你在做下面的練習之前應該具備
-
安裝好chrome,并通過chrome://version確認其版本號
-
安裝chromedriver并與你的chrome版本相匹配,下載路徑如下
https://registry.npmmirror.com/binary.html?path=chromedriver/ -
你應該有一個python+ide(如pycharm)的環境,反正下面的示例是用這些來完成的,
-
下好requests庫,對語法不再闡述
-
關于chromedriver
-
本質上是個web server
-
在命令列啟動chromedriver應該是如下提示
cmd>chromedriver.exe Starting ChromeDriver 100.0.4896.20 (f9d71f93d32a6487809d6f35a9670c879fe97dfe-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. -
放在那里不要關閉哦~
關于webdriver
-
參閱: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 = https://www.cnblogs.com/wuxianfeng023/p/{'desiredCapabilities':{ "caps":{"browserName":"chrome"} #此處可以變更瀏覽器型別,前提你啟動了對應的chromedriver或者geckodriver等, } } session_req = requests.post(url=server_url,json=session_data) #json傳遞 -
是不是相當于selenium的api
from selenium import webdriver driver = webdriver.Chrome() -
區別是?不需要安裝selenium就可以通過api來呼叫了,當然會更麻煩,人家給你封裝好了,
不一樣的,輸入網址
| 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' #這個url不能以/結尾 session_data = https://www.cnblogs.com/wuxianfeng023/p/{'desiredCapabilities':{ "caps":{"browserName":"chrome"} } } session_req = requests.post(url=server_url,json=session_data) #此處不能是data # 打開網址 session_id = session_req.json().get('sessionId') #首先要獲取sessionId,是后面操作的根基 dest_url = 'http://121.41.14.39:8088/index.html#/' #比如你要打開這個網址 get_url_data = https://www.cnblogs.com/wuxianfeng023/p/{'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' #這個url不能以/結尾 session_data = https://www.cnblogs.com/wuxianfeng023/p/{'desiredCapabilities':{ "caps":{"browserName":"chrome"} } } session_req = requests.post(url=server_url,json=session_data) #此處不能是data # 2. 輸入網址 session_id = session_req.json().get('sessionId') dest_url = 'http://106.14.1.150:8090/forum.php' #這是我在阿里云部署的一個服務器 get_url_data = https://www.cnblogs.com/wuxianfeng023/p/{'url':dest_url} requests.post(server_url+'/'+session_id+'/url',json=get_url_data) # 簡單封裝下 def get_eid(url,sid,method,method_value): #獲取elementid data = https://www.cnblogs.com/wuxianfeng023/p/{'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): #在指定的元素上輸入內容 data = https://www.cnblogs.com/wuxianfeng023/p/{'value':[text]} requests.post(url+'/'+sid+'/element/'+eid+'/value', json=data) def click_element(url,sid,eid): #點擊指定的元素 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,'123456') 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中的
- webelement.send_keys()
- webelement.click()
- driver.find_element(By.ID,'ID_VALUE')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/500388.html
標籤:Python
上一篇:7月27內容詳細
