實例分析

2021-07-02 17:00 更新

腳本的開頭我們引入了所有需要的模塊,單元測試是python內置的類似?Java JUnit?的模塊,提供了組織單元測試的框架。 ?selenium.webdriver?模塊提供了?WebDriver?的所有實現: ?Firefox?,?Ie?,?Chrome?,?Remote?,?Keys?類提供了鍵盤的代碼(回車,?ALT?,?F1?等等):

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

測試用例類繼承了?unittest.TestCase?類,這表明這個類是一個測試用例:

class PythonOrgSearch(unittest.TestCase):

?setUp?函數進行了初始化,你將要在這個類里編寫的所有測試方法都要先調用這個方法,接著我們創(chuàng)建了一個?Firefox WebDriver?實例:

def setUp(self):
    self.driver = webdriver.Firefox()

接下來是測試用例的方法,它應該總是以字符?'test'?開始. 方法的第一行 本地引用了 ?setUp?方法中創(chuàng)建的?driver?對象:

def test_search_in_python_org(self):
    driver = self.driver

?driver.get?方法會導向給定的URL的頁面,?WebDriver?會等待頁面完全加載完(就是?onload?函數被觸發(fā)了),才把程序的控制權交給你的測試或者腳本。 但是如果你的頁面用了太多的AJAX,那么這個機制就沒什么用了,因為它不知道頁面到底是什么時候加載完。

  driver.get("http://www.python.org")

下一行是個斷言,確認頁面標題里是否有?'Python'?這個單詞:

  self.assertIn("Python", driver.title)

?WebDriver?提供了一系統(tǒng)類似于?find_element_by_*?的方法來尋找頁面元素,例如,我們利用?find_element_by_name?方法,通過元素的?name?屬性來定位一個文本輸入框元素。 更詳細的尋找元素的方法可以參閱 第四章-元素定位:

  elem = driver.find_element_by_name("q")

接著我們發(fā)送了一些字符,類似于用鍵盤直接輸入。特殊的鍵盤符我們可以導入?selenium.webdriver.common.keys?,然后用?Keys?類來表示:

elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)

提交頁面之后我們應該確認一下是否有返回,為了確定有東西返回,我們在這里下一個斷言:

  assert "No results found." not in driver.page_source

最后瀏覽器窗口被關閉了,你也可以調用?quit?方法來代替?close?,區(qū)別在于?quit?會退出整個瀏覽器,而?close?只會關閉一個標簽,但是如果瀏覽器只有一個標簽,那么這兩個方法完全一樣,都會關閉整個瀏覽器。

  driver.close()

最后一行是運行測試套件的一些樣板代碼:

if __name__ == "__main__":
    unittest.main()


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號