使用Selenium测试Facebook Connect应用程序?

Zac*_*urt 5 selenium automated-tests facebook selenium-rc

有没有人有使用Selenium自动测试使用Facebook Connect进行用户登录的webapp的经验?您推荐的任何提示或方法?

Ame*_*mey 1

取决于你想做什么?

  1. 您会使用真实的 Facebook 用户(即经过 Facebook 验证的手机)吗?

    最安全、最可靠,但很难(不可能)收集“真实”用户(手机经过 FB 验证)。

    在定义用户/连接详细信息方面,例如教育历史、工作历史、姓名、年龄等(特别是如果您无法访问所有“真实”Facebook 帐户)。

  2. 为了测试应用程序而创建的假 Facebook 用户(未经 Facebook 验证)?

    可能是最容易设置的,因为都是假用户,不需要电话验证(使用 FB)。但需要为所有用户创建电子邮件 ID。

    尽管连接信息可以根据您的喜好定制。主要缺点之一(这发生在我身上)是,如果 Facebook 检测到用户不合法,FB 将冻结所有帐户。这将使所有 Facebook用户特定的自动化测试转眼间变得毫无用处。你无能为力(除非你打算获得一个全新的电话连接来验证这些帐户,没有谷歌号码,没有Skype,不允许基于IP的电话。FB对此非常严格)。并且一个号码只能授权1个账号。

  3. 您将使用 Facebook API 创建 Facebook 测试用户吗?

    这可能是使用 Facebook 连接来测试您的应用程序的理想方式(根据 FB 的说法)。单击此处获取有关如何使用它的文档。

    它可能看起来很简单,但它有它的缺点(主要的)。该 API 非常不可靠,有 10-20% 的时间返回错误,而其他时间则极其缓慢。如果FB测试用户的密码丢失一次,就无法找回。连接信息无法轻松自定义。设置某些东西需要付出相当大的努力,但每次都不能确定它是否有效。

我个人选择了第二种选择。Facebook 根据跨多个 ip 的并行登录来检测用户的合法性(我猜)。我在不同的服务器上运行 selenium 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");
Run Code Online (Sandbox Code Playgroud)