python+selenium实战之模拟登录模块

  • 本次使用BeautifulSoup查找验证码tag信息,redis查找验证码,然后使用selenium登录

  • 使用selenium有时候很讨厌登录逻辑,但是登录逻辑又绕不开,本次只是一个举例,理论上讲模拟登录只要了解登录实现逻辑基本上就解决一大半了。

  • 简单说一下实现逻辑:登录逻辑前后端分离,前端生成随机参数发起请求后端生成验证码存在redis并生成图片让前端下载。那么我们这次只需要找到tag并通过它查询redis即可获取验证码,查找网页tag在图片地址中,这样真是就太简单了。

上代码:

from seleniumimport webdriver

from timeimport sleep

from bs4import BeautifulSoup

from selenium.webdriver.common.action_chainsimport ActionChains

import redis



chromedriver =r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"

driver = webdriver.Chrome (chromedriver)

driver.get("http://192.168.0.86:xxxx")

#定位输入账号密码

driver.find_elements_by_class_name("el-input__inner")[0].send_keys("seeta")

driver.find_elements_by_class_name("el-input__inner")[1].send_keys("seeta110")

sleep(2)固定等待

#点击两次隐藏按钮

driver.find_element_by_xpath('//*[@id="app"]/div/div/div/form/div[2]/div/div[1]/span[2]/span/i').click()

driver.find_element_by_xpath('//*[@id="app"]/div/div/div/form/div[2]/div/div[1]/span[2]/span/i').click()

sleep(3)

#搜索验证码的tag

html = driver.page_source

soup = BeautifulSoup(html,"html.parser")

find_img_1 =str(soup.find_all(class_="el-tooltip"))

#分割到需要的tag

x = find_img_1.split('tag=',1 )[1]

x = x.split('"',1)[0]

#连接redis

conn = redis.Redis(host='192.168.0.148',port=6388,password='makenosense',db=0)#创建连接redis

#查找tag对应的验证码tag

code = conn.get("ai_building:"+x) 

code = code.decode()

driver.find_elements_by_class_name("el-input__inner")[2].send_keys(code)

#双击登录按钮

actions=ActionChains(driver)

actions.double_click(driver.find_element_by_id("login-bt"))

#退出

driver.quit()
  • 本来我希望通过实现登录逻辑进行登录,登录逻辑涉及 AES +RSA(这部分我后面贴上来),后来在反复确定之后发现有更简便的方法。
测试的乐趣也在于此,不要拘泥于条条框框,使用最简便的办法得到你想要的东西。所以测试并没有高低,技术才分高下。如果手工测试最简便我宁愿用手工测试。我认为好的测试就是在综合最少的测试资源完成最优的测试目标。最少与最优才是衡量一个测试员能力的标准。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。