Datawhale-爬蟲-Task5(selenium學習)

TNTZS666發表於2019-03-05

selenium簡介

什麼是Selenium?

  • Selenium是最廣泛使用的開源Web UI(使用者介面)自動化測試套件之一。它最初由Jason Huggins於2004年開發,作為Thought Works的內部工具。 Selenium支援跨不同瀏覽器,平臺和程式語言的自動化。
  • Selenium可以輕鬆部署在Windows,Linux,Solaris和Macintosh等平臺上。 此外,它支援iOS(iOS,Windows Mobile和Android)等移動應用程式的OS(作業系統)。
  • Selenium通過使用特定於每種語言的驅動程式支援各種程式語言。Selenium支援的語言包括C#,Java,Perl,PHP,Python和Ruby。目前,Selenium Web驅動程式最受Java和C#歡迎。 Selenium測試指令碼可以使用任何支援的程式語言進行編碼,並且可以直接在大多數現代Web瀏覽器中執行。
  • Selenium支援的瀏覽器包括Internet Explorer,Mozilla Firefox,Google Chrome和Safari。
  • Selenium可用於自動化功能測試,並可與Maven,Jenkins和Docker等自動化測試工具整合,以實現持續測試。 它還可以與TestNG和JUnit等工具整合,以管理測試用例和生成報告。

如何下載selenium

  • Windows下以管理員方式開啟命令提示符,輸入pip install selenium如下圖:
    在這裡插入圖片描述
  • 安裝成功後輸入pip list可以檢視到安裝的selenium版本:
    在這裡插入圖片描述

Selenium WebDriver功能特性

  • 多瀏覽器支援: Selenium WebDriver支援各種Web瀏覽器,如Firefox,Chrome,Internet Explorer,Opera等等。它還支援一些非傳統或罕見的瀏覽器,如HTMLUnit。
  • 多程式語言支援: WebDriver還支援大多數常用的程式語言,如Java,C#,JavaScript,PHP,Ruby,Pearl和Python。 因此,使用者可以基於自己的能力選擇任何一種受支援的程式語言並開始構建測試指令碼。
  • 速度: 與Selenium Suite的其他工具相比,WebDriver的執行速度更快。與RC不同,它不需要任何中間伺服器與瀏覽器通訊; 此工具直接與瀏覽器通訊。
  • 簡單命令: Selenium WebDriver中使用的大多數命令都易於實現。 例如,要使用以下命令在WebDriver中啟動瀏覽器:
//java實現
WebDriver driver = new FirefoxDriver(); //(Firefox瀏覽器)
WebDriver driver = new ChromeDriver(); //(Chrome瀏覽器)
WebDriver driver = new InternetExplorerDriver(); //(Internet Explorer瀏覽器)
  • WebDriver方法和類: WebDriver提供多種解決方案來應對自動化測試中的一些潛在挑戰。WebDriver還允許測試人員通過動態查詢器處理複雜型別的Web元素,如核取方塊,下拉選單和警報。

例項:使用selenium模擬登陸163郵箱。

注意點:

  • Web應用中經常會遇到frame/iframe 表單巢狀頁面的應用,WebDriver 只能在一個頁面上對元素識別與定位,對於frame/iframe 表單內嵌頁面上的元素無法直接定位。這時就需要通過switch_to.frame()方法將當前定位的主體切換為frame/iframe 表單的內嵌頁面中
  • 載入這個iframe需要一定時間,所以需要設一個等待直至獲取到標籤
  • 163郵箱的賬號密碼區域的input標籤的id是自動生成的,每次都不能用,所以不能用於定位標籤,這裡參考網上的一種寫法直接通過find_element_by_name方法查詢賬號和密碼標籤即可。

作業程式碼:

from selenium import webdriver
from time import sleep
options = webdriver.ChromeOptions()
options.add_argument('disable-infobars')
jy = webdriver.Chrome()
jy.maximize_window()
jy.get('https://mail.163.com/')
sleep(3)
jy.switch_to.frame(jy.find_element_by_xpath("//iframe[starts-with(@id,'x-URS-iframe')]"))  
jy.find_element_by_name("email").clear()
jy.find_element_by_name("email").send_keys('your user_name')
jy.find_element_by_name("password").clear()
jy.find_element_by_name("password").send_keys('your password')
jy.find_element_by_id("dologin").click()
sleep(10)
jy.close()

相關文章