首页 > 其他分享 >Selenium 4 新特性

Selenium 4 新特性

时间:2024-02-12 17:22:55浏览次数:37  
标签:webdriver elements Selenium 元素 driver 特性 element print

Selenium 4 新特性

相对定位器

to_left_of():位于目标元素左侧的元素

to_right_of():位于目标元素右侧的元素

above():位于目标元素上方的元素

below():位于目标元素下方的元素

near():位于目标元素附近(默认50像素以内)的元素

示例代码

from selenium import webdriver
from selenium.webdriver.support.relative_locator import with_tag_name
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

map_link = driver.find_element(By.LINK_TEXT, "地图")
elements = driver.find_elements(with_tag_name("a").near(map_link))
print("目标元素为a元素,它位于地图链接附近,符合条件的目标元素有")
for element in elements:
    print(element.text)

elements = driver.find_elements(with_tag_name("a").to_left_of(map_link))
print("目标元素为a元素,“地图”链接在其左侧,符合条件的目标元素有")
for element in elements:
    print(element.text)
    
news_link = driver.find_element(By.LINK_TEXT, "新闻")
elements = driver.find_elements(with_tag_name("a").to_right_of(news_link).to_left_of(map_link))
print("目标元素为a元素,“地图”链接在其左侧,“新闻”链接在其右侧,符合条件的目标元素有")
for element in elements:
    print(element.text)

输出

> 目标元素为a元素,它位于地图链接附近,符合条件的目标元素有
> hao123
> 视频
> 目标元素为a元素,“地图”链接在其左侧,符合条件的目标元素有
> 新闻
> hao123
> 目标元素为a元素,“地图”链接在其左侧,“新闻”链接在其右侧,符合条件的目标元素有
> hao123

显示等待逻辑组合

以前用WebDriverWait只能在until或者until_not中传入一个等待条件

all_of(* expected_conditions):多个等待条件必须同时为True,以列表返回每个等待条件的返回值

any_of(* expected_conditions):多个等待条件中至少有一个为True,以列表返回每个等待条件的返回值

none_of(* expected_conditions):多个等待条件中一个为True都没有,返回布尔类型

例子

from selenium import webdriver
import selenium.webdriver.support.expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By

def bar_linkdisplayed(webDriver):
    return webdriver.find_element(By.LINK_TEXT, "贴吧").is_displayed()

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
wait = WebDriverWait(driver, 5)
returns = wait.until(EC.all_of(
	bar_link_displayed,
    lambda p: p.find_element(By.LINK_TEXT, "地图").is_displayed(),
    EC.visibility_of_element_located((By.LINK_TEXT, "视频"))
))
print("all_of示例返回结果:", returns)

returns = wait.until(EC.any_of(
	EC.visibility_of_element_located((By.ID, "kw")),
    EC.visibility_of_element_located((By.ID, "不存在的元素"))
))
print("any_of示例返回结果:", returns)

returns = wait.until(EC.none_of(
	EC.visibility_of_element_located((By.ID, "不存在的元素1")),
    EC.visibility_of_element_located((By.ID, "不存在的元素2"))
))
print("none_of示例返回结果:", returns)

输出

> all_of示例返回结果:[True, True, <WebElement(session="...", element="...AC2")]
> any_of示例返回结果:<WebElement(session="...", element="...ASDF2")
> none_of示例返回结果:True

获取等待信息

在以前,set_page_load_timeoutimplicitly_waitset_script_timeout仅能够设置等待,但无法获取当前的等待设置

driver.timeouts来获取当前等待设置

from selenium import webdriver

driver = webdriver.Chrome()
driver.set_page_load_timeout(5)
driver.implicitly_wait(6)
driver.set_script_timeout(7)

print(driver.timeouts.__dict__)
print(driver.timeouts._page_load)
print(driver.timeouts._implicit_wait)
print(driver.timeouts_script)

结果

> {'_implicit_wait': 6000, '_page_load': 5000, '_script': 7000}
> 5000
> 6000
> 7000

打开新窗口

之前并不支持主动打开新窗口

new_window():支持打开新窗口

参数tab以标签形式打开,参数window以新窗口形式打开

from selenium import webdriver
driver = webdriver.Chrome()
driver.switch_to.new_window("tab")
driver.switch_to.new_window("window")

取消find_element_by_*find_elements_by_*

Selenium Grid改变了控制面板

标签:webdriver,elements,Selenium,元素,driver,特性,element,print
From: https://www.cnblogs.com/tongering/p/18013986

相关文章

  • Selenium Grid 高级运用
    SeleniumGrid高级运用SeleniumGrid详细参数配置Hub和Node共有的参数参数分类参数名称取值范围功能启动参数hostIP地址,默认随机分配默认即可启动参数port端口号,默认4444都行启动参数rolehub、node、standalone看当前节点的角色调试参数debug......
  • Selenium Grid 的基本运用
    SeleniumGrid的基本运用配置设置SeleniumGrid基于Java开发的,所以集群的每个节点上都需要安装Java并配置环境变量使用集群的时候访问Hub,然后由Hub来分发至Node节点上来执行任务下载以及安装命令无论是Hub还是Node下载的安装包为selenium-server-standalone-xxx.jarHub配置......
  • 8小时速成golang(三)Golang语言特性
    golang的优势一、极其简单的部署方式1、可直接编译成机器码2、不需要依赖其他库3、直接运行即可部署 二、静态语言类型可在编译的时候检查出大多隐藏问题 三、语言层面的并发1、天生的基因支持2、充分利用多核packagemainimport("fmt""time")fu......
  • Selenium Web Driver的基本运用
    SeleniumWebDriver的基本运用目录SeleniumWebDriver的基本运用浏览器窗口的基本操作浏览器导航操作浏览器窗口操作获取浏览器信息查找页面元素按id查找按name查找按class查找按链接文本查找按链接文本模糊查找按标签类型查找按XPath查找按CSS选择器查找通过By对象按动态条件......
  • Kubernetes-Init容器的6个特性
    本文主要从以下4个方面介绍Init容器:Init容器作用、Init容器特性、Init容器与应用容器的区别、Init容器实战。Kubernetes中的Pod内可以运行多个容器,主要分为2种:Init容器、应用容器,Sidecar容器也是一种特殊的Init容器。Init容器的作用Init容器是一种特殊容器,在Pod内的应用容器启......
  • Go语言-让我印象深刻的13个特性
    我们正在加速进入云原生时代,Go语言作为云原生的一块基石,确有它的独到之处。本文介绍Go语言的几个让我印象深刻的特性。1、兼顾开发效率和性能Go语言兼顾开发效率和性能。可以像Python那样有很快的开发速度,也可以像C++那样有很快的执行速度。2、编译速度很快编译速度很快,减少编......
  • 08-selenium
    1.selenium自动化selenium可以操作浏览器,在浏览器页面上实现:点击、输入、滑动等操作。不同于selenium自动化,逆向本质是:分析请求,例如:请求方法、请求参数、加密方式等。用代码模拟请求去实现同等功能。逆向vs自动化SeleniumSelenium,【优】简单不需要逆向,只需要控制浏览......
  • 在k8S中,DaemonSet类型的资源特性有哪些?
    Kubernetes(k8S)中的DaemonSet是一种控制器资源,它具有以下关键特性:每个节点运行一个实例:DaemonSet确保集群中的每个节点(满足特定条件的节点)上都运行一个Pod副本。这意味着无论何时创建或加入新的节点到集群中,DaemonSet都会自动为新节点调度和管理一个Pod。目标节点......
  • "Fault Tolerant Heap"(FTH)是Windows操作系统的一个特性,旨在提高应用程序的稳定性 自动
    "FaultTolerantHeap"(FTH)是Windows操作系统的一个特性,旨在提高应用程序的稳定性。它首次出现在Windows7和WindowsServer2008R2中,作为操作系统的一部分,用于自动检测和修正某些类型的应用程序错误,从而减少应用程序崩溃的频率。FTH的工作原理当应用程序频繁崩溃时,FTH会自动介......
  • 数据库之隔离级别,脏读幻读,事务特性
    目录1事务隔离级别1.1默认隔离级别1.2读未提交1.3读已提交1.4可重复读1.5序列化2事务关键词2.1定义(脏读,不可重复读,虚读)2.2不可重复读与幻读的区别3事务的四个特性3.1原子性3.2一致性3.3隔离性3.4持久性1事务隔离级别1.1默认隔离级别ISOLATION_DEFAULT:默认......