如何测试需要使用Selenium进行身份验证的页面?

时间:2011-05-16 18:07:15

标签: testing selenium phpunit

我需要使用Selenium测试Web应用程序。该应用程序在其设置中相当普遍:它需要登录才能公开大部分功能。加载页面后,如果用户未经过身份验证,则会重定向到登录表单,然后在提供凭据后返回到请求的页面。

通过Selenium解决这个问题的常用方法是什么?我认为人们没有登录每一个测试,因为这会导致大型测试套件的大量开销。有没有办法在测试中设置会话,然后将cookie信息用于后续测试,或者进行条件登录(不会导致大量代码重复!)?

我正在使用PHPUnit和Selenium ATM。

谢谢!

的Gonzalo

2 个答案:

答案 0 :(得分:4)

(我正在使用C#+ NUnit + Selenium RC)

大多数情况下,每个测试都会通过登录表单。但是,如果我正在编写一系列非常短的测试(每次大于10秒)并且有很多测试,我通常会通过从SetUp移动selenium start \ close调用来跨测试共享相同的浏览器实例TearDown方法来测试Fixture SetUp \ TearDown方法。这避免了重新验证的成本以及每次启动新浏览器的成本。我相信你可以用PHPUnit做类似的事情。

答案 1 :(得分:2)

如果这是基本的http auth,您可以使用带有网址请求的用户名/密码,如Selenium常见问题解答中所述:http://wiki.openqa.org/display/SEL/Selenium+Core+FAQ#SeleniumCoreFAQ-HowdoIuseSeleniumtologintositesthatrequireHTTPbasicauthentication%28wherethebrowsermakesamodaldialogaskingforcredentials%29%3F

  

如何使用Selenium登录   需要HTTP基础的网站   身份验证(浏览器的位置)   做一个模态对话框要求   凭证)?

     

使用用户名和密码   URL,如RFC 1738:Test中所述   键入打开     http://myusername:myuserpassword@myexample.com/blah/blah/blah

     

请注意,在Internet Explorer上   自微软以来,它将无法运作   URL中禁用的用户名/密码   在IE中。但是,您可以添加它   功能通过修改返回   您的注册表,如中所述   链接KB文章。设置一个   “iexplore.exe”DWORD为0 in   HKEY_CURRENT_USER \软件\微软\互联网   资源管理器\主\ FeatureControl \ FEATURE_HTTP_USERNAME_PASSWORD_DISABLE。

     

如果你不想修改   自己注册,你可以随时   使用Selenium Remote Control,它   自动设置该注册表   从版本0.9.2起为您提供密钥。