1. 程式人生 > >Selenium 的 常用操作

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() 退出遊覽器
還有一點坑爹的,在少部分網站,你訪問網頁的速度不要太快,移動的時候,不要瞬移,不要 移動速度 不變,等一些別的因素 不然會被認定為 機器人,然後返回給個異常給你。

感覺差不多了,若遇到不一樣的會補充。