python selenium中文文檔-入門

python selenium中文文檔-入門

2. 入門

2.1. 簡單用法

如果你已經安裝了Selenium Python庫,你可以像這樣從Python開始使用它。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

上面的腳本可以保存到文件中(例如: - python_org_search.py),然後就可以像這樣運行:

python python_org_search.py

在運行前應該先安裝 python selenium庫

2.2. 示例說明

selenium.webdriver模塊提供了所有WebDriver實現。 目前支持的WebDriver實現是Firefox,Chrome,IE和Remote。 Keys類提供鍵盤中的鍵,如RETURN,F1,ALT等。

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

接下來,創建一個 Firefox WebDriver .實例

driver = webdriver.Firefox() 

driver.get方法將導航到URL給出的頁面。 在將控件返回到測試或腳本之前,WebDriver將等待頁面完全加載(即“onload”事件已觸發)。 值得注意的是,如果你的頁面在加載時使用了大量的AJAX,那麼WebDriver可能不知道它何時完全加載:

driver.get("http://www.python.org") --- 加載URL頁面

下一行是斷言,確認標題中有“Python”字樣:

assert "Python" in driver.title

WebDriver提供了許多使用其中一個find_element_by_ *方法查找元素的方法。 例如,可以使用find_element_by_name方法通過其name屬性定位輸入文本元素。 有關查找元素的詳細說明,請參閱“定位元素”一章:

elem = driver.find_element_by_name("q")

接下來,我們發送指令,這類似於使用鍵盤輸入指令。 可以使用從selenium.webdriver.common.keys導入的Keys類發送特殊鍵。 為安全起見,我們首先清除輸入字段中的任何預先填充的文本(例如“搜索”),這樣就不會影響我們的搜索結果:

elem.clear()
elem.send_keys("pycon") -- 鍵入“pycon”
elem.send_keys(Keys.RETURN) -- 回車鍵

提交頁面後,如果有響應內容,就會得到對應內容。 為確保找到對應的響應內容,使用assert斷言

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

最後,關閉瀏覽器窗口。 也可以調用quit方法而不是關閉。 quit將退出整個瀏覽器,而close`將關閉一個選項卡,但如果只打開一個選項卡,默認情況下大多數瀏覽器將完全退出:

driver.close()

2.3. 使用Selenium編寫測試

Selenium主要用於編寫測試用例。 selenium包本身不提供測試工具/框架。 您可以使用Python的unittest模塊編寫測試用例。 其他工具/框架的選項是py.test和nose。

在本章中,我們使用unittest框架。 這是使用unittest模塊的修改示例。 這是對python.org搜索功能的測試:

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
class PythonOrgSearch(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def test_search_in_python_org(self):
driver = self.driver
driver.get("http://www.python.org")
self.assertIn("Python", driver.title)
elem = driver.find_element_by_name("q")
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)

assert "No results found." not in driver.page_source
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()

你可以在shell中運行上面的testcase.

python test_python_org_search.py
.
----------------------------------------------------------------------
Ran 1 test in 15.566s
OK

以上結果表明測試已成功完成。

2.4. 解釋一下這個例子

最初,導入所需的所有基本模塊。 unittest模塊是基於Java的JUnit的內置Python。 該模塊提供了測試用例的框架。 selenium.webdriver模塊提供了所有WebDriver實現。 目前支持的WebDriver實現是Firefox,Chrome,Ie和Remote。 Keys類提供鍵盤中的鍵,如RETURN,F1,ALT等。

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

測試用例類PythonOrgSearch繼承自unittest.TestCase。

class PythonOrgSearch(unittest.TestCase):

setUp是初始化的一部分,這個方法將在你要在這個測試用例類中編寫的每個測試函數之前調用。 在這裡,您將創建Firefox WebDriver的實例。 --- 類似於初始化

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

這是測試用例方法。 測試用例方法應始終以字符test開始。 此方法中的第一行創建對setUp方法中創建的驅動程序對象driver的本地引用。

def test_search_in_python_org(self):
driver = self.driver

driver.get方法將導航到URL給出的頁面。 在控制權返回到測試或腳本之前,WebDriver將等待頁面完全加載(即“onload”事件已觸發)。 值得注意的是,如果你的頁面在加載時使用了大量的AJAX,那麼WebDriver可能不知道它何時完全加載:

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

下一行是斷言,確認標題中有“Python”字樣:

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

WebDriver提供了許多使用其中一個find_element_by_ *方法查找元素的方法。 例如,可以使用find_element_by_name方法通過其name屬性定位輸入文本元素。 有關查找元素的詳細說明,請參閱“定位元素”一章:

elem = driver.find_element_by_name("q")

接下來,我們發送鍵盤按鈕,這類似於使用鍵盤輸入按鍵。 可以使用從selenium.webdriver.common.keys導入的Keys類發送特殊鍵:

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

提交頁面後,如果有響應內容的話, 為確保找到一些結果,使用斷言:

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

每個測試方法後都會調用tearDown方法。 這是一個執行所有清理操作的地方。 在當前方法中,瀏覽器窗口關閉。 您也可以調用quit方法而不是close。 退出將退出整個瀏覽器,而close將關閉一個選項卡,但如果它是唯一打開的選項卡,默認情況下大多數瀏覽器將完全退出:

def tearDown(self):
self.driver.close()
最後一行是運行測試套件的一些樣板代碼:
if __name__ == "__main__":
unittest.main()


分享到:


相關文章: