python selenium系列(11

前言

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