• Postman模拟Selenium Client和Web driver的交互


    Selenium是业界广泛使用的用于浏览器自动化的开源工具集。它支持JAVA,Ruby,C#, Python,JavaScript等编程语言。

    2004年,由ThoughtWorksJason Hugginsy及其团队开发而来。发展至今,经历了Selenium1, Selenium2, Selenium3和Selenium4四个大版本。本文主要关注Selenium4。

     

    Selenium主要由以下三部分组成:

    Selenium WebDriver

    支持多种开发语言的开源API,可用来模拟真实用户和浏览器进行交互,从而可将用户在浏览器上的访问和交互行为进行自动化。被广泛用于浏览器的自动化测试中。

    Selenium IDE

    Chrome和Firefox浏览器上的扩展程序,支持录制和重播用户在浏览器上的交互操作。

    Selenium Grid

    Selenium支持分布式运行的组件。通过Client-Server的模式,允许测试用例在不同的操作系统平台和不同的浏览器中并行运行。

     

    本文旨在探讨Selenium4中,selenium Client是如何与Browser Driver交互的,先来看看Selenium4的架构图:

     

    Selenium3和Selenium4的最大不同,就是Selenium4放弃了JSON Wire Protocol,转而直接通过W3c web Protocol与各浏览器的Driver进行交互。可能有些同学会问,为什么不早点这么干呢?因为在早期,其实浏览器的Driver都是由Selenium来提供的,浏览器的访问接口也并不统一,所以需要使用JSON Wire Protocol来负责在Selenium Client和各Browser Driver之间传递数据。而在Selenium4阶段,浏览器的访问接口都遵守W3c web Protocol,并且各浏览器自己维护各自的Driver。一句话,浏览器自己的驱动更加标准化了,从而提高了selenium代码的效率和稳定性。

    说了这么多,是时候表演真正的技术了。

    # -*- coding: utf-8 -*-

    from selenium import webdriver

    from selenium.webdriver.chrome.service import Service

    from webdriver_manager.chrome import ChromeDriverManager

    from selenium.webdriver.common.keys import Keys

    from selenium.webdriver.common.by import By

    chrome_driver_path = ChromeDriverManager().install()

    service = Service(executable_path=chrome_driver_path)

    option = webdriver.ChromeOptions()

    driver = webdriver.Chrome(service=service, options=option)

    driver.get("https://www.baidu.com/")

    input_box = driver.find_element(By.ID, "kw")

    input_box.send_keys("Hello")

    input_box.send_keys(Keys.ENTER)

    driver.quit()

    不好意思,其实这也没什么技术可言,我就是想用这句话衔接一下。

    以前用过selenium的人,可能都知道需要下载与浏览器版本对应的driver,要不然你的selenium代码就会罢工。最要命的是,如果你不去特意设置,我们的浏览器都是会自动更新版本的,这就让driver不匹配的问题防不胜防。而到了selenium4时代,引入了ChromeDriverManager,从而可以根据我们的浏览器当前版本,在代码运行时下载对应的Chrome Driver。其它浏览器也支持这样的功能。当然,ChromeDriverManager并不是我们今天要聊的重点。

    我们今天的重点是,手动模拟Selenium Client和Chrome Driver之间的交互。

    第一步: 启动Chrome Driver服务

    命令行执行命令: chromedriver -port=57789

  • 相关阅读:
    nginx优化--压缩
    opencv 入门学习
    刷题笔记27——图论并查集
    Java毕业设计-基于spring boot开发的实习管理系统-毕业论文+答辩ppt(附源代码+演示视频)
    程序员脱单
    vue2 - SuperMap3D添加S3M图层
    linux内网渗透
    Prime Sample
    python交通数据分析系统 智慧交通 实时监控系统 Flask框架(源码)✅
    互联网摸鱼日报(2023-10-11)
  • 原文地址:https://blog.csdn.net/JZF2050/article/details/127679532