web自动化系列-selenium执行js脚本|截图|识别验证码(十五)

1.执行脚本

如果你定位的元素通过各种方法都无法完成页面操作,最后的方法就是通过操作js脚本来完成 。

在selenium中提供了一个方法 ,这个可以方法可以自行JS的脚本 。具体为:

 

execute_script(js脚本) : js脚本代表要执行的脚本 


# 示例
js = "console log('hello world')"		# 打印hello world
driver.execute_script(js)  

具体案例:

driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
sleep(3)

js = 'window.scrollTo(0, document.body.scrollHeight)'	# 滚动到底部
driver.execute_script(js)		# 执行js脚本

sleep(3)

js = 'window.scrollTo(0, document.body.scrollTop=0)'	# 滚动到顶部
driver.execute_script(js)		# 执行js脚本

2.截图

编写好的自动化脚本有时候会运行错误 ,但是打印的信息又不足以排查出错误 ,故希望能在执行出错的时候对当前窗口截图保存 ,通过保存图片就可以非常直观的看出错误的原因 。

在selenium中提供了一个截图的方法 ,具体为:

driver.get_screenshot_as_file(img_path)		img_path : 图片保存路径
# 需要注意的是,它的保存格式为.png , 其它格式会报错。

具体案例 :

  1. 访问项目,

  2. 输入错误密码后

  3. 点击登录


# 保存头
"""
driver.get_screenshot_as_file(img_path)   img_path : 保存图片的路径加文件名 ,保存的是png格式 。
"""

# 定位tpshop登录
from selenium import webdriver
import time

# 1. 创建浏览器对象
driver = webdriver.Chrome()
driver.maximize_window()

# 2. 输入地址 :http://localhost
driver.get("http://localhost")

# 3. 定位元素
# 1) 点击登录
driver.find_element_by_link_text("登录").click()
time.sleep(3)

# 2) 输入用户名
driver.find_element_by_id("username").send_keys("13988888888")

# 3) 输入密码
driver.find_element_by_name("password").send_keys("1234567")

# 4) 输入验证码
driver.find_element_by_name("verify_code").send_keys("8888")

time.sleep(1)

# 5) 点击登录
driver.find_element_by_class_name("J-login-submit").click()
time.sleep(3)
driver.get_screenshot_as_file('login_error.jpg')	# 保存截图

time.sleep(5)
driver.quit()

 

3.验证码

只要你做web测试,肯定绕不过验证码这一关 ,因为系统设计验证码的初衷就是为了防自动化软件登录 。所以 ,在进行web自动化时 ,验证码的解决也必须是要考虑的 ,目前可行的方案有以下几种 :

解决方案说明推荐度
去掉验证码去掉验证码,虽说解决测试的问题,但是它容易给开发造成问题,比如不小心把没有验证码的代码上传到用户环境上 。一般
设置后门验证码保持正常变化,但是让开发做个通行证码,只要输入这个码就能验证通过,而这个码也只有测试人员知道,即便不小心上线,别人也不知道。推荐
验证码识别通过python-tesseract来识别图片类型的验证码,但是识别率不够稳定 ,而且有些系统验证码特别难 ,靠识别不能保证自动化的稳定性 。不推荐
记录cookie通过记录cookie进行跳过登录 。通过会话跟踪, 记录用户登录状态,需要实现记住密码和自动登录功能的系统才可以 。一般

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值