如果使用selenium绕过登录,直接进入主界面进行测试?

如果我们的自动化case有几百条甚至一些大型项目有几千条case,每个case都要花几秒钟去登录(为什么一个简单的登录需要几秒钟,我甚至见过10秒左右才能login的项目,这种项目真实无力吐槽,大概原因是像淘宝、京东这样的对用户体验要求很高的ToC项目国内就那么几家,而我们做的绝大多数都是ToB的项目,自然不会花那么多时间在性能方面的提升上,这种ToB的专业用户也不会在乎那么几秒钟),那么将会大量时间在登录上,浪费时间会影响测试进度。那么怎样才能提升自动化测试项目的效率呢?至少在登录这一点上,我们可以将时间节约下来,每实例一个浏览器的时候都让local storage都带上token就能绕过登录,有的项目是设置cookie,其实大同小异。

首先不管是自动化亦或者是手动的方式,都需要将登录后的token拿到

1. 手动的方式很简单,F12打开浏览器的开发者模式。登录成功后,随便找一个请求找到里面的request header,将里面的authorization的值拷贝出来就可以作为token

2.自动化登录的方式,这种方式需要打开开发者模式点击application,再点击local storage就能看一个或者若干条键值对,类似于token,authorization等字眼的键,这个就是保证浏览器关掉再打开在token未失效时间内不会让你重复登录的原因,原来浏览器是将你登录后服务端返回的token存储起来了。假设你们项目对应的键是appAuthorization,那么如下命令即可获得token

String token=driver.getLocalStorage().getItem("appAuthorization")
//初始化Chrome浏览器driver
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
//设置为true表示无头模式运行,即不用打开浏览器
options.setHeadless(true);
ChromeDriver driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
driver.get("https://example.url.cloud/");
//首次登录拷贝的token
String token="Bearer eyJhbGciOiJSU.............";
driver.getLocalStorage().setItem("appAuthorization", String.format("\"{\\\"appAuthorization\\\":\\\"%s\\\"}\"", token));
//如此一来,浏览器就直接进入web项目的主界面,而不会进入登录界面了,接下里就能进行各种各样的操作啦

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
使用Selenium绕过登录,你可以尝试以下步骤: 1. 导入Selenium库:import selenium 2. 创建一个浏览器对象:driver = selenium.webdriver.Chrome() 注意,这里假设你使用的是Chrome浏览器,所以需要下载对应的Chrome驱动并将其路径添加到系统环境变量中。 3. 打开登录页面:driver.get("登录页面的URL") 4. 找到用户名和密码的输入框元素,并输入相应的值:driver.find_element_by_name("username").send_keys("your_username") driver.find_element_by_name("password").send_keys("your_password") 这里假设登录页面的用户名输入框的name属性为"username",密码输入框的name属性为"password"。 5. 找到登录按钮元素,并进行点击操作:driver.find_element_by_name("login").click() 这里假设登录按钮的name属性为"login"。 6. 等待登录完成或跳转到目标页面:可以使用显式等待或隐式等待来等待特定元素出现或页面跳转完成。 例如,使用显式等待等待目标页面的某个元素出现: from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "target_element_id")) ) 这里假设目标页面中需要等待的元素的ID属性为"target_element_id"。 7. 此时,你可以继续进行后续操作。 需要注意的是,绕过登录可能违反网站的使用条款和条件,请确保你的操作合法,并遵守相关规定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值