python selenium系列(11
- 2020 年 1 月 8 日
- 筆記
一 前言
Selenium系列文章已經基本涵蓋了主要的知識點,至於PO模式,發現有篇文章寫的挺好的,後續轉載分享過來,哈哈。Python Web UI自動化技術就要告一段落了,接下來打算寫Django Web開發相關的文章,希望有興趣的同學可以關注、一起學習,最後的目標是基於Django開發一套簡易系統作為系列文章的總結。然後再繼續網路爬蟲、數據分析。。。好吧,感覺好多,而且只能靠業餘時間來整。。。
作為Selenium系列的完結,本文將對一些常用問題進行總結,同時也參考了網路上的一些資料,一併分享給大家。
二 常見問題總結
1. 如何使用ChromeDriver 驅動?
Selenium支援多種瀏覽器,而不同的瀏覽器需要有對應的驅動來支援,對於ChromeDriver,推薦從鏡像地址下載:http://npm.taobao.org/mirrors/chromedriver/,然後解壓出chromedriver的可執行文件,直接放到python安裝路徑且與python.exe同級目錄即可。可參看文章python selenium系列(一):框架介紹及安裝。
2. Selenium的元素定位思想?
除了基本的元素定位方法外,需要理解分層定位、多框架多窗口、多級菜單等定位思想和應用場景,以及在此思想上的具體問題具體分析。
3. 如何向下滾動到頁面的底部?
可以在載入完成的頁面上使用 execute_script 方法執行js,調用javascript API滾動到底部或頁面的任何位置。
如滾動到頁面底部的操作方法:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
該 window 對象在DOM有一個滾動到窗口任意位置的scrollTo方法。 scrollHeight是所有元素的共同屬性,document.body.scrollHeight 將給出整個頁面體的高度。
4. 如果上傳文件到文件上傳控制項?
選擇 <input type="file"> 元素並且調用 send_keys() 方法傳入要上傳文件的路徑,可以是絕對路徑,也可以是相對路徑(比較雞肋)。 請注意Windows和Unix系統路徑的區別。
5. 如果獲取當前窗口的截圖?
使用webdriver提供的 save_screenshot 方法:
from selenium import webdriver driver = webdriver.Firefox() driver.get('http://www.python.org/') driver.save_screenshot('screenshot.png') driver.quit()
6. 如何處理彈框?
使用webdriver提供的alert_is_present方法。
from selenium.webdriver.support import expected_conditions as EC #判斷彈框是否出現,如果出現則點擊取消,否則無須處理 result = EC.alert_is_present()(browser) # 如果存在 返回alter對象,否則返回false, 源碼 if result: print(result.text) result.dismiss() else: pass