Web元素交互
仅有五种基本命令可用于元素的操作:
附加验证
这些方法的设计目的是尽量模拟用户体验, 所以, 与 Actions接口 不同, 在指定制定操作之前, 会尝试执行两件事.
- 如果它确定元素在视口之外, 则会将元素滚动到视图中, 特别是将元素底部与视口底部对齐.
- 确保元素在执行操作之前是可交互的 . 这可能意味着滚动不成功, 或者该元素没有以其他方式显示.
确定某个元素是否显示在页面上太难了 无法直接在webdriver规范中定义, 因此Selenium发送一个带有JavaScript原子的执行命令, 检查是否有可能阻止该元素显示. 如果确定某个元素不在视口中, 不显示, 不可 键盘交互, 或不可 指针交互, 则返回一个元素不可交互 错误.
点击
元素点击命令 执行在 元素中央. 如果元素中央由于某些原因被 遮挡 , Selenium将返回一个 元素点击中断 错误.
1 # Navigate to url 2 driver.get("https://www.selenium.dev/selenium/web/inputs.html") 3 4 # Click on the element 5 driver.find_element(By.NAME, "color_input").click()
发送键位
元素发送键位命令 将录入提供的键位到 可编辑的 元素. 通常, 这意味着元素是具有 文本
类型的表单的输入元素或具有 内容可编辑
属性的元素. 如果不可编辑, 则返回 无效元素状态 错误.
以下 是WebDriver支持的按键列表.
1 # Navigate to url 2 driver.get("https://www.selenium.dev/selenium/web/inputs.html") 3 4 # Clear field to empty it from any previous data 5 driver.find_element(By.NAME, "email_input").clear() 6 7 # Enter Text 8 driver.find_element(By.NAME, "email_input").send_keys("admin@localhost.dev" )
清除
元素清除命令 重置元素的内容. 这要求元素 可编辑, 且 可重置. 通常, 这意味着元素是具有 文本
类型的表单的输入元素或具有 内容可编辑
属性的元素. 如果不满足这些条件, 将返回 无效元素状态 错误.
1 # Navigate to url 2 driver.get("https://www.selenium.dev/selenium/web/inputs.html") 3 4 # Clear field to empty it from any previous data 5 driver.find_element(By.NAME, "email_input").clear()
提交
在Selenium 4中, 不再通过单独的端点以及脚本执行的方法来实现. 因此, 建议不要使用此方法, 而是单击相应的表单提交按钮.
使用选择列表元素
Select对象现在将为您提供一系列命令, 用于允许您与 <select>
元素进行交互.
如果您使用的是 Java 或 .NET, 请确保您在代码中已正确加载所需的包. 您可以通过GitHub查看下面示例的完整代码.
请注意,此类仅适用于 HTML 元素 select
和 option
. 这个类将不适用于那些通过 div
或 li
并使用JavaScript遮罩层设计的下拉列表.
类型
选择方法的行为可能会有所不同, 具体取决于正在使用的 <select>
元素的类型.
单选
这是标准的下拉对象,其只能选定一个选项.
1 <select name="selectomatic"> 2 <option selected="selected" id="non_multi_option" value="one">One</option> 3 <option value="two">Two</option> 4 <option value="four">Four</option> 5 <option value="still learning how to count, apparently">Still learning how to count, apparently</option> 6 </select>
复选
此选择列表允许同时选定和取消选择多个选项. 这仅适用于具有 multiple
属性的 <select>
元素.
1 <select name="multi" id="multi" multiple="multiple"> 2 <option selected="selected" value="eggs">Eggs</option> 3 <option value="ham">Ham</option> 4 <option selected="selected" value="sausages">Sausages</option> 5 <option value="onion gravy">Onion gravy</option> 6 </select>
构建类
首先定位一个 <select>
元素, 然后借助其初始化一个Select
对象. 请注意, 从 Selenium 4.5 开始, 您无法针对禁用的 <select>
元素构建 Select
对象.
1 select_element = driver.find_element(By.NAME, 'selectomatic') 2 select = Select(select_element)
选项列表
共有两种列表可以被获取:
全部选项
获取 <select>
元素中所有选项列表:
1 option_list = select.options
选中的选项
获取 <select>
元素中所选中的选项列表. 对于标准选择列表这将只是一个包含一个元素的列表, 对于复选列表则表示包含的零个或多个元素.
1 selected_option_list = select.all_selected_options
选项
Select类提供了三种选择选项的方法. 请注意, 对于复选类型的选择列, 对于要选择的每个元素可以重复使用这些方法.
文本
根据其可见文本选择选项
1 select.select_by_visible_text('Four')
值
根据其值属性选择选项
1 select.select_by_value('two')
序号
根据其在列表中的位置选择选项
1 select.select_by_index(3)
禁用的选项
具有 disabled
属性的选项可能无法被选择.
1 <select name="single_disabled"> 2 <option id="sinlge_disabled_1" value="enabled">Enabled</option> 3 <option id="sinlge_disabled_2" value="disabled" disabled="disabled">Disabled</option> 4 </select>
1 with pytest.raises(NotImplementedError): 2 select.select_by_value('disabled')
取消选择选项
只有复选类型的选择列表才能取消选择选项. 您可以对要选择的每个元素重复使用这些方法.
1 select.deselect_by_value('eggs')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本