2012-01-13 43 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