有没有人有使用Selenium自动测试使用Facebook Connect进行用户登录的Web应用程序的经验?您有任何建议的技巧或方法吗?
取决于你想做什么?
最安全,最可靠的方法,但是很难( 不可能 )收集“真实”用户(FB验证的电话)。
在定义用户/联系细节方面,例如教育历史,工作历史,姓名,年龄等(特别是如果您无权访问所有“真实” facebook帐户)。
可能是最容易设置的,因为它们都是假用户,不需要电话验证(带有FB)。但是需要为所有用户创建电子邮件ID。
即使连接信息可以根据您的喜好进行定制。主要弊端之一(这已经发生在我身上)是,如果Fb检测到该用户不合法,FB将冻结所有帐户。眨眼间,所有您的Fb 用户特定的 自动化测试都将变得毫无用处。而且您无能为力(除非您计划建立一个全新的电话连接来验证这些帐户,没有Google号,没有Skype,不允许使用基于IP的电话。FB对此非常严格)。同样,一个号码只能授权1个帐户。
可能是使用Facebook连接测试应用程序的理想方式(根据FB)。单击此处以获取有关如何使用它的文档。
它可能看起来很简单,但是它有它的缺点(主要缺点)。非常不可靠,API会在10%到20%的时间内返回错误,而在其他时间则极慢。如果放错了一次,则无法获取FB测试用户的密码。连接信息无法轻松自定义。设置某件东西需要一定的努力,但不能确保每次都能正常工作。
我个人选择了第二种选择。Facebook基于多个ip上的并行登录来检测用户的合法性(我想)。我有运行在各种服务器上的硒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");