我需要使用Selenium测试Web应用程序。该应用程序在其设置中相当普遍:它需要登录才能公开大部分功能。加载页面后,如果用户未经过身份验证,则会重定向到登录表单,然后在提供凭据后返回到请求的页面。
通过Selenium解决这个问题的常用方法是什么?我认为人们没有登录每一个测试,因为这会导致大型测试套件的大量开销。有没有办法在测试中设置会话,然后将cookie信息用于后续测试,或者进行条件登录(不会导致大量代码重复!)?
我正在使用PHPUnit和Selenium ATM。
谢谢!
的Gonzalo
答案 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起为您提供密钥。