2012-01-13 22 views
5

有沒有人有使用Selenium自動化測試使用Facebook Connect進行用戶登錄的Web應用程序的經驗?你推薦的任何提示或方法?使用Selenium測試Facebook Connect應用程序?

+0

還有一個帖子被Facebook工程師一段時間回來,在後期的鏈接已經過期,雖然,它提到的Watir。 HTTP://developers.facebook。com/blog/post/305/ – David 2012-04-12 19:23:31

+0

不幸的是FB的博客文章現在已經消失了。但是這個測試API可能是有用的:https://developers.facebook.com/docs/test_users/ – David 2014-02-20 22:46:55

回答

1

取決於你想要做什麼?

  1. 是否要使用真實實的Facebook用戶(這是手機被Facebook驗證)?

    最安全,最可靠,但非常困難(不可能)收集「真實」的用戶(手機驗證FB)。在定義用戶/連接細節的方面,如教育歷史,工作經歷,姓名,年齡等(特別是如果你不能訪問所有「真實」的Facebook賬戶),就可以了。

  2. 爲測試應用程序而創建的假Facebook用戶(未通過Fb驗證)?

    可能最容易設置,因爲所有的都是假用戶,不需要電話驗證(帶FB)。 但是需要創建所有用戶的電子郵件ID。

    儘管連接信息可以根據自己的喜好定製。主要缺點之一(它發生在我身上)是,如果Fb檢測到用戶不合法,FB會凍結所有帳戶。這將使您的所有Fb 用戶特定的自動化測試在眨眼之間都是無用的。並且你沒有太多可以做的事情(除非你打算獲得一個全新的電話連接來驗證這些賬戶,沒有谷歌號碼,沒有Skype,也沒有基於IP的電話,FB對此非常嚴格)。另外一個號碼只能授權一個帳號。

  3. 你會使用Facebook API創建Fb測試用戶嗎?

    可能是使用Facebook連接測試您的應用程序的理想方式(根據FB)。有關如何使用它的文檔,請單擊here

    這似乎很簡單,但它有其不足之處(主要的)。非常不可靠,API返回10-20%的錯誤時間,並且極其緩慢。沒有辦法檢索FB測試用戶的密碼,如果放錯了一次。連接信息不容易定製。需要付出相當大的努力來設置一些東西,而不是每次都確定它是否有效。

我個人選擇了第二個選項。 Facebook根據跨多個ips的並行登錄檢測用戶的合法性(我猜)。我有各種服務器上運行的硒RC,這些服務器並行運行這些測試,可能會引發紅旗。所以我只是以更有組織的方式安排這些腳本,以避免登錄重疊。

我希望在這個漫長的解釋中找到答案。 :)


對於Perl實現 -

$sel->start(); 
$sel->open_ok("$URL"); 
$sel->set_speed("500"); 
$sel->click_ok("//img[\@alt='Facebook']",'User clicks on Facebook Login'); 
$sel->wait_for_pop_up_ok("", "30000",'Facebook Login Popup Loading'); 
$sel->select_pop_up("null");  
$sel->type_ok("email", "email\@email.com",'User enters Facebook credentials - Username'); 
$sel->type_ok("pass", "password",'User enters Facebook credentials - Password'); 
$sel->key_press("pass", "\\13",'User returns Facebook Login credentials'); 
$sel->select_window("null"); 
+1

是否真的有select_pop_up()方法?還是僅適用於Perl?我沒有在Java API中看到它(http://release.seleniumhq.org/selenium-remote-control/0.9.2/doc/java/) – David 2012-04-12 19:13:37