聊聊Selenium自动化登录Idaas,你学会了吗?

发表于:2022-4-29 09:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:吕涵之    来源:新钛云服

  说明:
  后台网站对接阿里云的idaas后,原来的用户都需要导入到idaas中,好在idaas提供导入用户的功能,但是后台要对这些用户授权前,这些用户都必须登录idaas且首次访问后台页面。我们这边大概需要操作150多个用户,如果人工手动操作登录,怕是一两个小时也完不成。
  为了避免重复且浪费时间的工作,我写了一个python脚本,实现批量自动登录idaas并访问后端网站。
  操作步骤:
  一、安装chromedriver
  1.查看chrome游览器的版本
  下载之前查看自己电脑chrome游览器的版本 ,在设置中点击关于Chrome即可查看,我这边的版本是101.0.4951.41 。
查看谷歌浏览器版本

  2.下载chromedriver
  打开下载链接:http://chromedriver.storage.googleapis.com/index.html ,选择和chrome游览器相同或相近的版本,否则无法调用chrome游览器。我这边选择的是与我浏览器最相近的101.0.4951.15版。
查找相近版本

  选择与自己系统相符的安装包进行下载,我是windows系统下载chromedriver_win32.zip 。
选择与系统相对应的包

  3.记住安装路径
  下载下来的安装包直接解压即可,记住安装路径,我的路径C:\Users\15418\Desktop\chromedriver.exe。
安装路径

  二、单用户登录
  1.打开/关闭谷歌浏览器
  #coding=utf-8
  #使用selenium库中的webdriver工具
  from selenium import webdriver
  #打开浏览器,这里填写chromedriver的路径,才能打开浏览器
  driver = webdriver.Chrome(executable_path=r"C:\Users\15418\Desktop\chromedriver.exe")
  #关闭浏览器
  driver.quit()

  2.访问sso页面
  #使用get的方式访问sso页面
  driver.get("https://sso.xxx.com/")

idaas登录界面

  3.找到输入框及登录按钮的前端代码
  访问sso页面后按F12,在Elements中找到账户名的输入框。鼠标移动到输入框那一行代码,上面的输入框就会出现蓝色阴影提示。在用户名输入框代码中,input类型即为输入框,它的class名称为"ivu-input ivu-input-default",这些信息会在输入用户名中用到。
用户名

  找到密码输入框的前端代码,同样input类型即为输入框,他的类型type为password。做的这些操作都是为了让代码找到密码输入框在哪里,具有input类型,且type为password的就只有密码输入框,为后续自动输入密码做准备。
登录

  同理,找到提交按钮的特性:button按钮类型、class名称为“ivu-btn ivu-btn-primary ivu-btn-long”。
密码

  4.单个用户实现登录
  #coding=utf-8
  from selenium import webdriver
  from selenium.webdriver.common.by import By
  #打开浏览器
  driver = webdriver.Chrome(executable_path=r"C:\Users\15418\Desktop\chromedriver.exe")
  #访问sso页面
  driver.get("https://sso.xxx.com/")
  #隐式等待,等页面元素稳定后就定位
  driver.implicitly_wait(30)
  #找到用户名输入框并输入用户名
  driver.find_element(By.CSS_SELECTOR, 'input[class="ivu-input ivu-input-default').send_keys("此处填用户名")
  #找到密码输入框并输入密码
  driver.find_element(By.CSS_SELECTOR, 'input[type="password"').send_keys("此处填密码")
  #找到登录按钮并登录
  driver.find_element(By.CSS_SELECTOR, 'button[class="ivu-btn ivu-btn-primary ivu-btn-long"').click()
  #关闭浏览器
  driver.quit()

  三、首次访问应用服务
  登录idaas后需要第一次访问下应用服务,应用服务才能收到是哪些用户进而对这些用户授权,所以需要在登录的状态下进行访问。
  #找到应用服务并点击进行访问
  driver.find_element(By.CSS_SELECTOR,'a[href="/api/xxx"').click()

访问应用服务

  四、批量登录并访问应用服务
  上面讲述的是单个用户的登录情况,现在我们需要批量登录,先创建一个文件里面写着用户名用换行分割(如下图所示),由于我们的初始密码都是统一的,所以我直接在代码中写死了,一个用户登录访问完成后紧接着下一个用户登录,直至最后一个用户完成登录访问。
  完整代码:
  #coding=utf-8
  from selenium import webdriver
  from selenium.webdriver.common.by import By
  with open(r'name.txt','r',encoding='utf8')as read_f:
    for line in read_f:
        username=line.strip("\n")
        password="xxx"
        driver = webdriver.Chrome(executable_path=r"C:\Users\15418\Desktop\chromedriver.exe")
        driver.get("https://sso.xxx.com/")
        driver.implicitly_wait(30)
        driver.find_element(By.CSS_SELECTOR, 'input[class="ivu-input ivu-input-default').send_keys(username)
        driver.find_element(By.CSS_SELECTOR, 'input[type="password"').send_keys(password)
        driver.find_element(By.CSS_SELECTOR, 'button[class="ivu-btn ivu-btn-primary ivu-btn-long"').click()
        driver.find_element(By.CSS_SELECTOR,'a[href="/api/xxx"').click()
        driver.quit()

  至此,使用selenium批量自动登录并访问应用服务完成。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号