大家经常纠结于UI自动化测试过程中验证码如何处理!!
比较简单的思路有:让开发在测试环境把验证码的功能屏蔽掉、让开发给你做一个万能验证码(比如1234)!
今天本文在这里介绍一个另辟蹊径的方案,绕过网站的登录验证码。首先需要手动登录一次你的测试网站,去chrome的F12里获取这个网站的cookie信息,找到对应的保存登录信息的cookie,记录下来备用,接下来再代码中将上述cookie信息通过webdriver写入的自动化脚本所弹出的浏览器中,这样服务器就会认为你已经登录过了,从而达到绕过登录环节的目的。
代码参考如下:
package cn.testfan.test_selenium; import java.util.Set; import java.util.concurrent.TimeUnit; import org.openqa.selenium.Cookie; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class TestCookieWithSelenium { public static void main(String[] args) throws InterruptedException { WebDriver driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.get("http://localhost:8080/javamall"); // 必须先访问一次测试页面,程序自动创建一次cookie driver.manage().deleteAllCookies(); // 删除cookie里的内容 Cookie ck = new Cookie("JSESSIONID", "9AF1605B9B8020042522F557F903F8D1", "/javamall/"); // 初始化已经保存了登录信息的cookie driver.manage().addCookie(ck); // webdriver添加cookie driver.get("http://localhost:8080/javamall"); // 下面才是正式测试开始,这次访问完后,就会发现已经登录成功了 driver.manage().window().maximize(); Thread.sleep(2000); Set<Cookie> cookies = driver.manage().getCookies(); System.out.println(String.format("Domain -> name -> value -> expiry -> path")); for (Cookie c : cookies) System.out.println(String.format("%s -> %s -> %s -> %s -> %s", c.getDomain(), c.getName(), c.getValue(), c.getExpiry(), c.getPath())); driver.close(); driver.quit(); } }
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!