W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
腳本的開頭我們引入了所有需要的模塊,單元測試是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()
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: