2013-03-06 66 views
2

好的,我很困惑。所以我想用Selenium Webdriver和Python來刮一個頁面。我在Selenium IDE中記錄了一個測試用例。它有像Python的Selenium Webdriver:獲取頁面,輸入值,點擊提交,獲取源代碼

Command Taget 
click  link=14 

但我看不出如何在Python中運行。理想的最終結果是我有最後一頁的來源。

是否有run_test_case命令?還是我必須編寫單獨的命令行?我寧願錯過測試用例和實際自動化之間的聯繫。每個站點告訴我如何加載初始頁面以及如何從該頁面獲取內容,但是如何輸入值並單擊內容並獲取源代碼?

我看到:

submitButton=driver.find_element_by_xpath("....") 
submitButton.click() 

確定。並輸入值?一旦我提交了一個頁面,獲取源代碼?對不起,這是如此普遍,但我真的環顧四周,並沒有找到一個很好的教程,實際上告訴我如何做我認爲是Selenium Webdriver的全部重點。

回答

1

我從來沒有用過IDE。我只需手工編寫測試或現場自動化。

from selenium import webdriver 

browser = webdriver.Firefox() 
browser.get("http://www.google.com") 
print browser.page_source 

你可以把在一個腳本,只是做python wd_script.py或者你可以打開一個Python的外殼和手工鍵入它,看瀏覽器中打開,看它得到由每行驅動。爲了這個工作,你顯然需要安裝Firefox。並非所有版本的Firefox都可以與所有版本的Selenium一起使用。然而,每個(Firefox 19,Selenium 2.31)的當前最新版本都會這樣做。

顯示登錄到形式可能是這樣一個例子:

username_field = browser.find_element_by_css_selector("input[type=text]") 
username_field.send_keys("my_username") 
password_field = browser.find_element_by_css_selector("input[type=password]") 
password_field.send_keys("sekretz") 
browser.find_element_by_css_selector("input[type=submit]").click() 
print browser.page_source 

這種東西是寫容易得多,如果你知道CSS很好。嘗試查找JavaScript中生成的元素可能會導致奇怪的錯誤。例如,你可能會在他們存在之前尋找他們。通過放入time.sleep一段時間,看看是否可以解決問題,很容易判斷是否屬於這種情況。更優雅的是,你可以抽象某種普遍的等待元素的功能。

如果你想運行Webdriver會話作爲一套集成測試的一部分,那麼我會建議使用Python的unittest來創建它們。您將瀏覽器驅動到正在測試的網站,並斷言您正在執行的操作會使頁面處於您期望的狀態。如果你有興趣,我可以分享一些如何工作的例子。