盘点selenium4和selenium3的区别

这篇具有很好参考价值的文章主要介绍了盘点selenium4和selenium3的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在某些情况下,升级仍然会存在依赖项的问题,比如使用python的pip进行selenium安装的时候会出现依赖异常。

一、升级依赖关系

使用 Python 的最重要变化是所需的最低版本,Selenium 4 将至少需要Python 3.7 或更高版本。

在python环境下,基于pip命令行做升级的话, 你可以执行:

1、在python3.7+环境下

执行如下命令会自动安装selenium4以上最新版。

pip3 install selenium

如果需要安装selenium3的相关版本,需要指定版本安装。

pip3 install selenium==3.14.0

如果在python3.7以上环境,但是pip版本在19以下,会出现依赖问题,而导致安装最新版selenium失败的问题,解决方法就是升级pip。、

python -m pip install --upgrade pip

或者通过get-pip.py文件升级(私聊作者获取最新版),将其下载到本地:d:\get-pip.py

可以通过执行该文件升级pip,主要用于pip崩溃后的重装和升级。

python d:\get-pip.py
2、在python3.6环境下

执行如下命令会自动安装selenium3.14.0版本。

pip3 install selenium

二、新版本的差异

Selenium 4 移除了对旧协议的支持,并在引擎盖下默认使用 W3C WebDriver 标准。对于大多数情况,此实施不会影响最终用户,主要的例外是Capabilities和Actions类。

1、capabilities的更新

如果测试功能的结构不符合 W3C,可能会导致会话无法启动,以下是 W3C WebDriver 标准功能列表:

  • ·browserName
  • ·browserVersion(代替version)
  • ·platformName(代替platform)
  • ·acceptInsecureCerts
  • ·pageLoadStrategy
  • ·proxy
  • ·timeouts
  • ·unhandledPromptBehavior

上面列表中未包含的任何功能都需要包含供应商前缀。这适用于浏览器特定功能以及云供应商特定功能。例如,如果您的云供应商为您的测试使用build和name功能,您需要将它们包装在一个cloud:options块中(与您的云供应商核对适当的前缀)。

旧版本的写法(selenium3):

 
caps = {}
 
caps['browserName'] = 'firefox'
 
caps['platform'] = 'Windows 10'
 
caps['version'] = '92'
 
caps['build'] = my_test_build
 
caps['name'] = my_test_name
 
driver = webdriver.Remote(cloud_url, desired_capabilities=caps)

新版本的写法(selenium4+):

2、定位元素方法的更新

 
from selenium.webdriver.firefox.options import Options as FirefoxOptions
 
options = FirefoxOptions()
 
options.browser_version = '92'
 
options.platform_name = 'Windows 10'
 
cloud_options = {}
 
cloud_options['build'] = my_test_build
 
cloud_options['name'] = my_test_name
 
options.set_capability('cloud:options', cloud_options)
 
driver = webdriver.Remote(cloud_url, options=options)

旧版本的写法(selenium3):

 
driver.find_element_by_class_name("className")
 
driver.find_element_by_css_selector(".className")
 
driver.find_element_by_id("elementId")
 
driver.find_element_by_link_text("linkText")
 
driver.find_element_by_name("elementName")
 
driver.find_element_by_partial_link_text("partialText")
 
driver.find_element_by_tag_name("elementTagName")
 
driver.find_element_by_xpath("xpath")

以上写法在selenium4中已经失效,不能使用。

新版本的写法(selenium4+):

 
 
from selenium.webdriver.common.by import By
 
driver.find_element(By.CLASS_NAME,"xx")
 
driver.find_element(By.CSS_SELECTOR,"xx")
 
driver.find_element(By.ID,"xx")
 
driver.find_element(By.LINK_TEXT,"xx")
 
driver.find_element(By.NAME,"xx")
 
driver.find_element(By.PARITIAL_LINK_TEXT,"xx")
 
driver.find_element(By.TAG_NAME,"xx")
 
driver.find_element(By.XPATH,"xx")
3、定位多个元素方法的更新

查找多个元素 使用find_elements*。

旧版本的写法(selenium3):

 
driver.find_elements_by_class_name("className")
 
driver.find_elements_by_css_selector(".className")
 
driver.find_elements_by_id("elementId")
 
driver.find_elements_by_link_text("linkText")
 
driver.find_elements_by_name("elementName")
 
driver.find_elements_by_partial_link_text("partialText")
 
driver.find_elements_by_tag_name("elementTagName")
 
driver.find_elements_by_xpath("xpath")

新版本的写法(selenium4+):

 
driver.find_elements(By.CLASS_NAME,"xx")
 
driver.find_elements(By.CSS_SELECTOR,"xx")
 
driver.find_elements(By.ID,"xx")
 
driver.find_elements(By.LINK_TEXT,"xx")
 
driver.find_elements(By.NAME,"xx")
 
driver.find_elements(By.PARITIAL_LINK_TEXT,"xx")
 
driver.find_elements(By.TAG_NAME,"xx")
 
driver.find_elements(By.XPATH,"xx")
4、executable_path的更新

executable_path 已弃用, 请传递一个服务对象。

旧版本的写法(selenium3):

 
from selenium import webdriver
 
options = webdriver.ChromeOptions()
 
options.add_experimental_option("excludeSwitches", ["enable-automation"])
 
options.add_experimental_option("useAutomationExtension", False)
 
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, options=options)

新版本的写法(selenium4+):

from selenium import webdriver
 
from selenium.webdriver.chrome.service import Service as ChromeService
 
options = webdriver.ChromeOptions()
 
options.add_experimental_option("excludeSwitches", ["enable-automation"])
 
options.add_experimental_option("useAutomationExtension", False)
 
service = ChromeService(executable_path=CHROMEDRIVER_PATH)
 
driver = webdriver.Chrome(service=service, options=options)

三、Selenium 4新增了相对定位

Selenium 4中带来了相对定位这个新功能,在以前的版本中被称之为"好友定位 (Friendly Locators)"。它可以帮助你通过某些元素作为参考来定位其附近的元素。

现在可用的相对定位有:

above 元素上

below 元素下

toLeftOf 元素左

toRightOf 元素右

near 附近

findElement 方法现在支持with(By)新方法其可返回RelativeLocator相对定位对象。

1、如何工作

Selenium是通过使用JavaScript函数返回对应元素的各种属性例如:右,左,下,上。

2、above() 元素上

返回当前指定元素位置上方的WebElement对象

 
from selenium.webdriver.common.by import By
 
from selenium.webdriver.support.relative_locator import locate_with
 
passwordField = driver.find_element(By.ID, "password")
 
emailAddressField = driver.find_element(locate_with(By.TAG_NAME, "input").above(passwordField))
2、below() 元素下

返回当前指定元素位置下方的WebElement对象。

from selenium.webdriver.common.by import By
 
from selenium.webdriver.support.relative_locator import locate_with
 
emailAddressField = driver.find_element(By.ID, "email")
 
passwordField = driver.find_element(locate_with(By.TAG_NAME, "input").below(emailAddressField))
3、toLeftOf() 元素左

返回当前指定元素位置左方的WebElement对象。

 
from selenium.webdriver.common.by import By
 
from selenium.webdriver.support.relative_locator import locate_with
 
submitButton = driver.find_element(By.ID, "submit")
 
cancelButton = driver.find_element(locate_with(By.TAG_NAME, "button").
 
to_left_of(submitButton))
4、toRightOf() 元素右

返回当前指定元素位置右方的WebElement对象。

  1. from selenium.webdriver.common.by import By
     
    from selenium.webdriver.support.relative_locator import locate_with
     
    cancelButton = driver.find_element(By.ID, "cancel")
     
    submitButton = driver.find_element(locate_with(By.TAG_NAME, "button").
     
    to_right_of(cancelButton))

4、near() 附近 

from selenium.webdriver.common.by import By
 
from selenium.webdriver.support.relative_locator import locate_with
 
emailAddressLabel = driver.find_element(By.ID, "lbl-email")
 
emailAddressField = driver.find_element(locate_with(By.TAG_NAME, "input").
 
near(emailAddressLabel))

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

selenium3与4的区别,python,软件测试,经验分享,postman,开发语言,web

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。selenium3与4的区别,python,软件测试,经验分享,postman,开发语言,web

selenium3与4的区别,python,软件测试,经验分享,postman,开发语言,web

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。文章来源地址https://www.toymoban.com/news/detail-857378.html

到了这里,关于盘点selenium4和selenium3的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python Selenium3 自动化测试实战:构建高效测试项目

    💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】 🤟 基于Web端打造的:👉轻量化工具创作平台 💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在当今软件开发领域,自动化测试成为确保软件质量和提高开发效率的关键步骤。本文将深入探讨如何使

    2024年02月05日
    浏览(30)
  • 【Python爬虫】selenium4新版本使用指南

    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 IE(7, 8, 9, 10, 11) , Mozilla Firefox , Safari , Google Chrome , Opera , Edge 等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能

    2024年02月06日
    浏览(36)
  • python爬虫之selenium4使用(万字讲解)

    声明以下的例子,只是来作为测试学习,并不作为真正的爬虫 我们在浏览一些网站时,有不少内容是通过 JavaScript动态渲染的,或是 AJAX 请求后端加载数据,这其中涉及到了不少加密参数如 token,sign,难以找规律,较为复杂。像前面的百度贴吧的一个评论的回复,百度翻译等

    2024年04月10日
    浏览(44)
  • 【Python爬虫 • selenium】selenium4新版本自动获取驱动的常见问题

    关于上次发布的文章《【Python爬虫 • selenium】selenium4新版本使用指南》很多人反馈说自动获取的驱动会导致闪退,本次文章给出详细配置。 首先说一下大家闪退的问题。我在低版本的python中,安装selenium,发现安装的是旧版本,并不是selenium4的版本,就导致用法还是selenium

    2024年01月17日
    浏览(44)
  • 【记录】Python3|Selenium4 极速上手入门(Windows)

    环境:Windows 版本:python3,selenium 4.11.2 写这个是方便自己重装电脑时重新装 Selenium,懒得每次都重新找链接。 Chrome 和 Edge 或其他浏览器任选其一。 首先,终端运行: 官网下载Chrome:https://www.google.cn/intl/zh-CN/chrome/ 安装好Chrome之后查看Chrome版本:chrome://settings/help 如果Chrome版

    2024年02月07日
    浏览(31)
  • Python3 Selenium4 chromedriver Pycharm闪退的问题

    Python3版本:3.11.5 Pycharm版本:2023.2.1 Chrome版本:117.0.5938.150(正式版本)  在使用最新版的Selenium4版本时,chromedriver可以驱动Chrome但是闪退,Selenium目前最新版本是4.13.0(Python版) 可能原因: 1.chromedriver版本和Chrome版本不一致导致,chromedriver版本是能下载到的最新版:117.0.5

    2024年02月06日
    浏览(25)
  • Python+Selenium4三大等待&预期条件_web自动化(4)

    目录 0. 上节回顾 1. 定位失败的原因 2. 强制等待 3. 隐式等待 4. 显式等待 【重点难点】 4.1. 实例化 WebDriverWait 对象 4.2. 指定等待条件 4.3. 等待条件的具体要求 4.3. 1. 等待条件是一个函数 4.3. 2. 返回值是布尔值 4.3. 3. 只有一个参数,参数值是driver 4.3. 4. 出现异常 5. 流畅等待 (

    2024年02月11日
    浏览(35)
  • Python+Selenium4浏览器交互_web自动化(2)

    目录 0. 上节内容回顾 1 . 浏览器基本操作 1.1 启动 退出 1. 手动安装driver ,启动浏览器时,需要传递2个参数: 1.2 窗口设置 1.3 页面导航 1.4 获取页面信息 1.5 页面截图 2. 浏览器的高级操作 2.1 窗口切换 2.2 操作Cookies 2.3 执行JavaScript 今日内容:浏览器交互(调整窗口大小、导航

    2023年04月08日
    浏览(41)
  • Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题

    之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫(2)-Selenium控制浏览器 Python爬虫(3)-Selenium结合pywin32模拟键盘操作 Python爬虫(4)-Seleni

    2024年02月04日
    浏览(34)
  • 自动化测试之八大元素定位方式(python3.10+selenium4)

    元素的定位是自动化测试核心。要操作一个对象,首先要识别定位或找到这个对象。为了实现网页整体布局,我们先要知道,一个元素,是如何定位到页面上的某个位置的,这就是元素定位。 系统环境 Windows 11 📌 python3.10.5 🔖 selenium 4.8.0 🚩 注意:以下每种定位方式均有一

    2024年02月03日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包