自动化测试: Selenium 自动登录授权,再 Requests 请求内容

这篇具有很好参考价值的文章主要介绍了自动化测试: Selenium 自动登录授权,再 Requests 请求内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Selenium 自动登录网站、截图及 Requests 抓取登录后的网页内容。一起了解下吧。

  • Selenium: 支持 Web 浏览器自动化的一系列工具和库的综合项目。
  • Requests: 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。

selenium requests,技术分享,软件测试,自动化测试,selenium,python,自动化测试,测试工程师,软件测试

 

为什么选择 Selenium 实现自动登录?

Selenium 实现,相当于模拟用户手动打开浏览器、进行登录的过程。

相比直接 HTTP 请求登录,有几个好处:

  1. 避免登录窗口的复杂情况(iframe, ajax 等),省得分析细节。
    • 用 Selenium 实现,依照用户操作流程即可。
  2. 避免模拟 Headers 、记录 Cookies 等 HTTP 完成登录的细节。
    • 用 Selenium 实现,依赖浏览器自身功能即可。
  3. 利于实现加载等待、发现特殊情况(登录验证等),加进一步逻辑。

另外,自动登录等过程的可视化,给外行看挺让人感觉高端的。

为什么选择 Requests 抓取网页内容?

抓取登录后的某些内容,而非爬取网站, Requests 够用、好用。

1) 准备 Selenium

基础环境: Python 3.7.4 (anaconda3-2019.10)

pip 安装 Selenium :

pip install selenium
复制代码

获取 Selenium 版本信息:

$ python
Python 3.7.4 (default, Aug 13 2019, 15:17:50)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium
>>> print('Selenium version is {}'.format(selenium.__version__))
Selenium version is 3.141.0
复制代码

2) 准备浏览器及其驱动

下载 Google Chrome 浏览器并安装: www.google.com/chrome/

下载 Chromium/Chrome WebDriver: chromedriver.storage.googleapis.com/index.html

然后,将 WebDriver 路径加入到 PATH ,例如:

# macOS, Linux
export PATH=$PATH:/opt/WebDriver/bin >> ~/.profile

# Windows
setx /m path "%path%;C:\WebDriver\bin\"
复制代码

3) Go coding!

读取登录配置

登录信息是私密的,我们从 json 配置读取:

# load config
import json
from types import SimpleNamespace as Namespace

secret_file = 'secrets/douban.json'
# {
#   "url": {
#     "login": "https://www.douban.com/",
#     "target": "https://www.douban.com/mine/"
#   },
#   "account": {
#     "username": "username",
#     "password": "password"
#   }
# }
with open(secret_file, 'r', encoding='utf-8') as f:
  config = json.load(f, object_hook=lambda d: Namespace(**d))

login_url = config.url.login
target_url = config.url.target
username = config.account.username
password = config.account.password
复制代码

Selenium 自动登录

以 Chrome WebDriver 实现,登录测试站点为「豆瓣」。

打开登录页面,自动输入用户名、密码,进行登录:

# automated testing
from selenium import webdriver

# Chrome Start
opt = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=opt)
# Chrome opens with “Data;” with selenium
#   https://stackoverflow.com/questions/37159684/chrome-opens-with-data-with-selenium
# Chrome End

# driver.implicitly_wait(5)

from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 5)

print('open login page ...')
driver.get(login_url)
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])

driver.find_element_by_css_selector('li.account-tab-account').click()
driver.find_element_by_name('username').send_keys(username)
driver.find_element_by_name('password').send_keys(password)
driver.find_element_by_css_selector('.account-form .btn').click()
try:
  wait.until(EC.presence_of_element_located((By.ID, "content")))
except TimeoutException:
  driver.quit()
  sys.exit('open login page timeout')
复制代码

如果用 IE 浏览器,如下:

# Ie Start
# Selenium Click is not working with IE11 in Windows 10
#   https://github.com/SeleniumHQ/selenium/issues/4292
opt = webdriver.IeOptions()
opt.ensure_clean_session = True
opt.ignore_protected_mode_settings = True
opt.ignore_zoom_level = True
opt.initial_browser_url = login_url
opt.native_events = False
opt.persistent_hover = True
opt.require_window_focus = True
driver = webdriver.Ie(options = opt)
# Ie End
复制代码

如果设定更多功能,可以:

cap = opt.to_capabilities()
cap['acceptInsecureCerts'] = True
cap['javascriptEnabled'] = True
复制代码

打开目标页面,进行截图

print('open target page ...')
driver.get(target_url)
try:
  wait.until(EC.presence_of_element_located((By.ID, "board")))
except TimeoutException:
  driver.quit()
  sys.exit('open target page timeout')

# save screenshot
driver.save_screenshot('target.png')
print('saved to target.png')
复制代码

Requests 复刻 Cookies ,请求 HTML

# save html
import requests

requests_session = requests.Session()
selenium_user_agent = driver.execute_script("return navigator.userAgent;")
requests_session.headers.update({"user-agent": selenium_user_agent})
for cookie in driver.get_cookies():
  requests_session.cookies.set(cookie['name'], cookie['value'], domain=cookie['domain'])

# driver.delete_all_cookies()
driver.quit()

resp = requests_session.get(target_url)
resp.encoding = resp.apparent_encoding
# resp.encoding = 'utf-8'
print('status_code = {0}'.format(resp.status_code))
with open('target.html', 'w+') as fout:
  fout.write(resp.text)

print('saved to target.html')
复制代码

4) 运行测试

可以临时将 WebDriver 路径加入到 PATH :

# macOS, Linux
export PATH=$(pwd)/drivers:$PATH

# Windows
set PATH=%cd%\drivers;%PATH%
复制代码

运行 Python 脚本,输出信息如下:

$ python douban.py
Selenium version is 3.141.0
--------------------------------------------------------------------------------
open login page ...
open target page ...
saved to target.png
status_code = 200
saved to target.html
复制代码

截图 target.png, HTML 内容 target.html ,结果如下:

selenium requests,技术分享,软件测试,自动化测试,selenium,python,自动化测试,测试工程师,软件测试

 

结语

登录过程如果遇到验证呢?

  1. 滑动验证,可以 Selenium 模拟
    • 滑动距离,图像梯度算法可判断
  2. 图文验证,可以 Python AI 库识别

  今天的分享就到此结束了 ,如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

selenium requests,技术分享,软件测试,自动化测试,selenium,python,自动化测试,测试工程师,软件测试

selenium requests,技术分享,软件测试,自动化测试,selenium,python,自动化测试,测试工程师,软件测试

这些对想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源免费分享~

selenium requests,技术分享,软件测试,自动化测试,selenium,python,自动化测试,测试工程师,软件测试文章来源地址https://www.toymoban.com/news/detail-809961.html

到了这里,关于自动化测试: Selenium 自动登录授权,再 Requests 请求内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium自动化测试框架中使用Cookies绕过登录

    在使用selenium测试后台时常常每个流程都需要走登录流程,这样自然比较浪费时间。如果遇到登录需要输入验证码等情况,就可能出师未捷身先死。 在Web应用中,登录状态通常是通过Cookie中对应的session id验证的。也是就是说,我们只要携带上登录后的Cookies,浏览器就会自动

    2024年02月09日
    浏览(48)
  • python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化登录测试,可提供点参考!下面就包括测试代码和每种测试情况的截图。 代码如下: 测试结果如

    2024年02月16日
    浏览(41)
  • Python + selenium实战:自动化登录功能测试用例,入门级!

    测试行业真是越来越卷了,点点点几乎没有竞争力,入行几乎都需要掌握一些自动化技术,本文就小编最近学习的 python + selenium 进行一个简单的登录功能实现 适用对selenium python unittest有一些了解的同学,大佬轻喷~ python selenium time ddt openpyxl unittest HTMLTestRunner data/login.xlsx 将

    2024年01月18日
    浏览(60)
  • 自动化测试Lab①—selenium模拟输入账号密码登录QQ空间

    目录 前言:selenium介绍 实验过程:业务分析 实验过程:编写自动化测试代码 Selenium是一个广泛使用的开源自动化测试工具,主要用于Web应用程序的功能测试和自动化。它提供了一系列的API和工具,允许开发人员使用多种编程语言(如Java、Python、C#等)来编写自动化脚本。

    2024年02月20日
    浏览(47)
  • 网络请求爬虫【requests】和自动化爬虫【selenium】

    在Python开发的爬虫项目中, requests 和 selenium 是两个常用的库,它们各有特点和应用场景。 相同点 数据抓取: 无论是 selenium 还是 requests ,两者的基本目的都是为了从网络上抓取数据。 自动化: 它们都能够自动化地访问网页,获取需要的信息。 不同点 工作原理: requests 直

    2024年02月20日
    浏览(45)
  • 【Web项目实战】从零开始学习Web自动化测试:用Python和Selenium实现网站登录功能

    B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠 https://www.bilibili.com/video/BV1ua4y1V7Db 目录 1.环境搭建

    2024年02月06日
    浏览(70)
  • selenium自动化原理应用 - 利用 requests 模拟 selenium 驱动浏览器

    selenium是一个web自动化测试的开源框架,它支持多语言:python/java/c#… 前面也有一篇文章说明了,selenium+浏览器的环境搭建。 selenium支持多语言,是因为selenium与浏览器驱动之间是通过http协议进行通信的。只关心通信的数据是否能够正确解读 ,并不关心这个数据是从哪个客户

    2024年02月03日
    浏览(54)
  • Python+Requests实现接口自动化测试

    一般对于自动化的理解,有两种方式的自动化。 第一,不需要写代码,完全由工具实现,这种方式的工具一般是公司自己研发的,方便黑盒测试人员使用。这种工具的特点是学习成本低,方便使用,但是通用性不强,也就是换了一家公司,就很有可能无法使用之前的工具。

    2024年01月16日
    浏览(77)
  • 接口自动化测试之Requests模块详解

    Python中,系统自带的urllib和urllib2都提供了功能强大的HTTP支持,但是API接口确实太难用了。Requests 作为更高一层的封装,在大部分情况下对得起它的slogan——HTTP for Humans。 让我们一起来看看 Requests 这个 HTTP库在我们接口自动化测试中的使用吧 发送请求 在使用 Requests发送网络

    2024年02月08日
    浏览(42)
  • 接口测试 03 -- 接口自动化思维 & Requests库应用

    接口测试自动化,简单来讲就是功能测试用例脚本化然后执行脚本,产生一份可视化测试报告。不管什么样的测试方式,都是为了验证功能与发现 BUG。那为什么要做接口测试自动化呢? 一句话概括就是为了节省人力成本。 具体来说,包括以下几点: ● 减轻自己工作量,把

    2024年01月23日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包