当前位置: 首页 > news >正文

Lambda函数与Selenium WebDriverWait类一起使用

Lambda函数是一种匿名函数,也称为内联函数或者lambda表达式。它们在Python中用于创建简短的、一次性的函数。Lambda函数通常用于在代码中传递函数作为参数,或者在需要一个简单的函数,但不想正式定义一个函数的情况下使用。

Lambda函数的特点包括:

  • 简洁:Lambda函数通常用于简单的函数功能,可以在一行代码中定义函数。
  • 匿名性:Lambda函数是匿名的,没有函数名,只能通过变量来引用。
  • 可以作为一等公民:Lambda函数可以像普通函数一样被传递、赋值、返回。

Lambda函数的语法如下:
lambda arguments: expression

其中,`arguments` 是参数列表,可以是零个或多个参数,而 `expression` 是函数体,是一个单个表达式,它是Lambda函数的返回值。

以下是一个Lambda函数的简单示例:

add = lambda x, y: x + y
print(add(3, 5))  # 输出: 8

Lambda函数通常与内置函数如`map()`、`filter()`、`reduce()`等一起使用,例如:

# 使用map()函数将列表中的每个元素平方
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # 输出: [1, 4, 9, 16, 25]# 使用filter()函数过滤出列表中的偶数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出: [2, 4, 6, 8, 10]

Lambda函数也可以与排序函数一起使用,例如sorted(): 

# 使用lambda函数对列表中的元组进行排序
students = [('Alice', 20), ('Bob', 18), ('Charlie', 22), ('David', 19)]
sorted_students = sorted(students, key=lambda x: x[1])  # 按年龄排序
print(sorted_students)
# 输出: [('Bob', 18), ('David', 19), ('Alice', 20), ('Charlie', 22)]

使用Lambda函数与Selenium WebDriver中的WebDriverWait类一起使用,用于等待页面元素的出现或消失

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import ElementNotVisibleException# 等待元素出现
element = WebDriverWait(driver, 10).until(lambda x: x.find_element(By.ID, "someId"))# 等待元素消失
is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element(By.ID, "someId").is_displayed())
  • WebDriverWait被用来等待特定条件出现,它会在一定时间内轮询直到条件成立,或者超时
  • lambda x: x.find_element(By.ID, "someId") 是一个Lambda函数,它接收WebDriver对象作为输入参数x,然后在WebDriver对象上查找ID为"someId"的元素。
  • until方法等待条件成立,即元素被找到。反复调用传入的方法,直到返回值不为False
  • until_not方法等待条件不再成立,即元素不再可见(在此示例中,元素不再显示)。
  • until_not方法:与until方法相反,它会反复调用传入的方法,直到返回值为False为止。如果超时时间内条件不满足,则同样抛出TimeoutException异常。这个方法通常用于等待某个条件变为假,比如等待元素消失或执行某个操作后返回不符合预期的结果。

这种方式可以用于等待页面加载、元素出现、元素消失等各种场景,是Selenium WebDriver中常见的用法之一。

相关文章:

  • C++11 新特性:常量表达式 constexpr(下)
  • 【算法】雪花算法生成分布式 ID
  • C语言-结构体-015
  • 设计模式总结(四)
  • Spring 之声明式事务和 Spring Junit 案例应用详解
  • Spring Boot: 使用MongoOperations操作mongodb
  • Vue+SpringBoot打造智慧家政系统
  • 机器学习之无监督学习简介及算法库推荐
  • 学点Java_Day6_基于Copyright和Actions On Save的IDEA自动更新文件最后编辑时间的方法研究(IDEA2021.2及以上)
  • 联想笔记本的声音键没有反应怎么办?
  • Selenium 学习(0.21)——软件测试之单元测试
  • C语言案例01, 输入两个整数,获得两个数加减乘除的值,持续更新中~
  • 【Spring Cloud】微服务通信概述
  • 【C语言】结构体内存对齐问题
  • <JavaEE> 了解网络层协议 -- IP协议
  • angular学习第一篇-----环境搭建
  • Consul Config 使用Git做版本控制的实现
  • FastReport在线报表设计器工作原理
  • Js基础知识(一) - 变量
  • js作用域和this的理解
  • maven工程打包jar以及java jar命令的classpath使用
  • oschina
  • PAT A1017 优先队列
  • React-生命周期杂记
  • tensorflow学习笔记3——MNIST应用篇
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 阿里云购买磁盘后挂载
  • 服务器之间,相同帐号,实现免密钥登录
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端攻城师
  • 深入 Nginx 之配置篇
  • 使用 @font-face
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 转载:[译] 内容加速黑科技趣谈
  • ​LeetCode解法汇总518. 零钱兑换 II
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (done) 两个矩阵 “相似” 是什么意思?
  • (补)B+树一些思想
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (六)Hibernate的二级缓存
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)为什么要选择C++
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)Mysql的优化设置
  • .net core 6 redis操作类
  • .NET Core 项目指定SDK版本
  • .net core 依赖注入的基本用发
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net开发时的诡异问题,button的onclick事件无效
  • @EnableWebMvc介绍和使用详细demo