Selenium Web元素交互

news/2025/2/6 3:57:43/

目录

目录

Web元素交互

附加验证

点击

发送键位

清除

使用选择列表元素

类型

单选

复选

构建类

选项列表

全部选项

选中的选项

选项

文本

序号

禁用的选项

取消选择选项


Web元素交互

用于操纵表单的高级指令集.

仅有五种基本命令可用于元素的操作:

  • 点击 (适用于任何元素)
  • 发送键位 (仅适用于文本字段和内容可编辑元素)
  • 清除 (仅适用于文本字段和内容可编辑元素)
  • 提交 (仅适用于表单元素)
  • 选择 (参见 选择列表元素)

附加验证

这些方法的设计目的是尽量模拟用户体验, 所以, 与 Actions接口 不同, 在指定制定操作之前, 会尝试执行两件事.

  1. 如果它确定元素在视口之外, 则会将元素滚动到视图中, 特别是将元素底部与视口底部对齐.
  2. 确保元素在执行操作之前是可交互的 . 这可能意味着滚动不成功, 或者该元素没有以其他方式显示.
    确定某个元素是否显示在页面上太难了 无法直接在webdriver规范中定义, 因此Selenium发送一个带有JavaScript原子的执行命令, 检查是否有可能阻止该元素显示. 如果确定某个元素不在视口中, 不显示, 不可 键盘交互, 或不可 指针交互, 则返回一个元素不可交互 错误.

点击

元素点击命令 执行在 元素中央. 如果元素中央由于某些原因被 遮挡 , Selenium将返回一个 元素点击中断 错误.

    # Navigate to urldriver.get("https://www.selenium.dev/selenium/web/inputs.html")# Click on the element driver.find_element(By.NAME, "color_input").click()

发送键位

元素发送键位命令 将录入提供的键位到 可编辑的 元素. 通常, 这意味着元素是具有 文本 类型的表单的输入元素或具有 内容可编辑 属性的元素. 如果不可编辑, 则返回 无效元素状态 错误.

以下 是WebDriver支持的按键列表.

    # Navigate to urldriver.get("https://www.selenium.dev/selenium/web/inputs.html")# Clear field to empty it from any previous datadriver.find_element(By.NAME, "email_input").clear()# Enter Textdriver.find_element(By.NAME, "email_input").send_keys("admin@localhost.dev" )

清除

元素清除命令 重置元素的内容. 这要求元素 可编辑, 且 可重置. 通常, 这意味着元素是具有 文本 类型的表单的输入元素或具有 内容可编辑 属性的元素. 如果不满足这些条件, 将返回 无效元素状态 错误.

    # Navigate to urldriver.get("https://www.selenium.dev/selenium/web/inputs.html")# Clear field to empty it from any previous datadriver.find_element(By.NAME, "email_input").clear()

使用选择列表元素

与其他元素相比,选择列表具有特殊的行为.

Select对象现在将为您提供一系列命令, 用于允许您与 <select> 元素进行交互.

如果您使用的是 Java 或 .NET, 请确保您在代码中已正确加载所需的包. 您可以通过GitHub查看下面示例的完整代码.

请注意,此类仅适用于 HTML 元素 select 和 option. 这个类将不适用于那些通过 div 或 li 并使用JavaScript遮罩层设计的下拉列表.

类型

选择方法的行为可能会有所不同, 具体取决于正在使用的 <select> 元素的类型.

单选

这是标准的下拉对象,其只能选定一个选项.

<select name="selectomatic"><option selected="selected" id="non_multi_option" value="one">One</option><option value="two">Two</option><option value="four">Four</option><option value="still learning how to count, apparently">Still learning how to count, apparently</option>
</select>

复选

此选择列表允许同时选定和取消选择多个选项. 这仅适用于具有 multiple 属性的 <select>元素.

<select name="multi" id="multi" multiple="multiple"><option selected="selected" value="eggs">Eggs</option><option value="ham">Ham</option><option selected="selected" value="sausages">Sausages</option><option value="onion gravy">Onion gravy</option>
</select>

构建类

首先定位一个 <select> 元素, 然后借助其初始化一个Select 对象. 请注意, 从 Selenium 4.5 开始, 您无法针对禁用的 <select> 元素构建 Select 对象.

    select_element = driver.find_element(By.NAME, 'selectomatic')select = Select(select_element)

选项列表

共有两种列表可以被获取:

全部选项

获取 <select> 元素中所有选项列表:

    option_list = select.options

选中的选项

获取 <select> 元素中所选中的选项列表. 对于标准选择列表这将只是一个包含一个元素的列表, 对于复选列表则表示包含的零个或多个元素.

    selected_option_list = select.all_selected_options

选项

Select类提供了三种选择选项的方法. 请注意, 对于复选类型的选择列, 对于要选择的每个元素可以重复使用这些方法.

文本

根据其可见文本选择选项

    select.select_by_visible_text('Four')

根据其值属性选择选项

    select.select_by_value('two')

序号

根据其在列表中的位置选择选项

    select.select_by_index(3)

禁用的选项

Selenium v4.5

具有 disabled 属性的选项可能无法被选择.

    <select name="single_disabled"><option id="sinlge_disabled_1" value="enabled">Enabled</option><option id="sinlge_disabled_2" value="disabled" disabled="disabled">Disabled</option></select>
    with pytest.raises(NotImplementedError):select.select_by_value('disabled')

取消选择选项

只有复选类型的选择列表才能取消选择选项. 您可以对要选择的每个元素重复使用这些方法.

    select.deselect_by_value('eggs')

http://www.ppmy.cn/news/611401.html

相关文章

程序设计团队项目

目录 程序设计团队项目团队作业&#xff08;一&#xff09;&#xff1a;团队展示任务一&#xff1a;团队组建任务二&#xff1a;团队展示其他团队作业&#xff08;二&#xff09;&#xff1a;项目选题任务一&#xff1a;团队选题任务二&#xff1a;需求分析其他团队作业&#x…

《OpenCV3编程入门》学习笔记5 Core组件进阶(六)输入输出XML和YAML文件

第5章 Core组件进阶 5.6 输入输出XML和YAML文件 5.6.1 XML和YAML文件 XML和YAML是使用非常广泛的文件格式&#xff0c;可以利用XML或者YAML式的文件存储和还原各种数据结构&#xff0c;还可以存储和载入任意复杂数据结构 1.XML&#xff08;Extensible Markup Language&…

Java 二分法查找

二分法查找的步骤 1 查找前元素先排序 2 确定中间区域的位置mid(lowhigh)/2 3 比较 如果等于要查找的值则直接返回,如果大于查找的值,那么则去小的部分查找每次则会减1 如果要查找的值小于中间值 则去比较大的区域查找每次加1 package me; import java.util.Arrays; publ…

将5g做到世界顶级

将5g做到世界顶级 某公司最近向某电信合作伙伴保证&#xff0c;它有足够的库存&#xff0c;可以在2021年之前继续向它们提供5G基站芯片组。在上个月失去对这项技术的使用之前&#xff0c;这家公司囤积了为其网络设备供电的7nm处理器。由于该地区的无线运营商将花费1700亿美元推…

关于cookie与本地 存储的区别的问题。

1. cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器&#xff0c;仅在本地保存。 2. cookie数据还有路径&#xff08;path&#xff09;的概念&#xff0c;可以限制cookie只属于某个路径下。存储大小限制也不同&#xff0c;cookie数据…

算法设计与分析第5章 回溯法(一)【回溯法】

第5章 回溯法 5.1 回溯法 1.回溯法的提出  有许多问题&#xff0c;当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时&#xff0c;往往要使用回溯法。 2. 问题的解空间 &#xff08;1&#xff09;问题的解向量&#xff1a;回溯法希望一个问题的解能够表示…

runtime系统的Cello

runtime系统的Cello 通过充当一个现代的、功能强大的runtime系统&#xff0c;Cello使许多以前在C中不切实际或笨拙的事情变得简单&#xff0c;例如&#xff1a; 通用数据结构 多态函数 接口/类型类 构造函数/析构函数 可选垃圾回收 例外情况 反思 而且&#xff0c;由于…

Java 顺序查找

Java 顺序查找就是让关键字与队列中的数从第一个开始比较直到找出给定关键字相同的数为止, package me; public class Me {public static void main(String[] args) {int [] arr {3,2,5,8,6,4,9}; //用冒泡排序int find 8;//要查找的数据int count -1;//定义找到的位置for(…