Selenium 的 常用操作
Selenium 的好處:
有些網站的JS或加密 太複雜,可破動態載入的網頁,節約時間成本,模擬遊覽器進行操作簡單
若想 找刺激 ,就先去各大網站的登陸頁面試試水。
套路就一個: 抓包分析引數,利用遊覽器的監聽事件,找到引數的大概位置,下斷點,一步一步除錯遊覽器。找到怎樣加密的。。
from selenium import webdriver
需要下載啟動的exe檔案:
火狐:geckodriver.exe
無頭遊覽器:phantomjs.exe 停止更新
谷歌:chromedriver.exe 對應遊覽器版本
全部用火狐遊覽器舉例:
driver = webdriver.Firefox(executable_path=path) 建立一個web 啟動器可傳入裝置的位置
driver.get(‘https://www.baidu.com’) 訪問一個網站
driver.page_source 相當於 requests 返回的 text 資訊
超時時間 可利用 time.sleep 自行測試
driver1.set_page_load_timeout(40) 頁面超時時間
driver1.set_script_timeout(40) 指令碼載入超時時間
driver1.set_window_size(1366,768) 遊覽器的 大小
定位元素的函式 看個人喜好,我喜歡用 xpath,裡面有很多方法:tag標籤,css選擇器等
driver.find_element_by_xpath() 通過 xpath 定位 元素,只能定位第一個
driver.find_elements_by_xpath() 通過 xpath 定位 元素 返回列表,可定為多個
# 獲取截圖 driver.get_screenshot_as_file('screenshot.png') # print('element',element) left = int(element.location['x']) # print(left) top = int(element.location['y']) right = int(element.location['x'] + element.size['width']) bottom = int(element.location['y'] + element.size['height']) # 通過Image處理影象,得到準確的photo from PIL import Image im = Image.open('screenshot.png') im = im.crop((left, top, right, bottom)) im.save('vcode.png')
定位 後 可以進行 事件控制例如 點選,雙擊,右鍵,拖動
定位後 賦予 給 element_login 變數
滑鼠的操作: 兩篇文章
https://blog.csdn.net/huilan_same/article/details/52305176?utm_source=copy
https://blog.csdn.net/CCGGAAG/article/details/75717186
selenium 關於遊覽器 模擬滑鼠的 移動的時候 有坑: 由於遊覽器的大小被確定了,當移動到遊覽器外面時,會報錯。。
當在同一個遊覽器,點選開啟多個網頁時:會出現無法獲取到你想要的網頁資訊。
不要慌,這個時候,你需要考慮,你的控制代碼是否在頁面 。。如若不然,你需要移動控制代碼到當前頁面。。
移動到當前頁面:
all_page = driver.window_handles #返回 遊覽器控制代碼的列表
current_page = driver.current_window_handle # 獲取當前頁面的控制代碼
driver.switch_to_window(driver.window_handles[1])#移動控制代碼
處理JS彈窗:https://www.cnblogs.com/mengyu/p/6952774.html
driver.quit() 退出遊覽器
還有一點坑爹的,在少部分網站,你訪問網頁的速度不要太快,移動的時候,不要瞬移,不要 移動速度 不變,等一些別的因素 不然會被認定為 機器人,然後返回給個異常給你。
感覺差不多了,若遇到不一樣的會補充。