Web
自动化测试中,模拟用户与下拉框(也称为选择框或下拉列表)的交互是一个常见的任务。Selenium
是一个流行的自动化测试工具,它可以通过模拟用户行为来与 Web
页面进行交互。本文将介绍在使用 Selenium
无头浏览器时,如何有效地进行下拉框选择。Python 3.12.0
Select
来选择下拉框,下面是一个简单的示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Select Dropdown Page</title>
</head>
<body>
<h1>Select Dropdown Example</h1>
<label for="dropdown"></label><select id="dropdown">
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
</select>
<p id="selectedOption">Selected Option: </p>
<script>
document.getElementById("dropdown").addEventListener("change", function () {
var selectedOption = document.getElementById("selectedOption");
selectedOption.innerText = "Selected Option: " + this.value;
});
</script>
</body>
</html>
selenium
使用 Select
选择,这里我们使用 select_by_visible_text
方法:import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
# 初始化WebDriver,指定chrome_options
driver = webdriver.Chrome()
# 打开测试页面
driver.get("xxxxxxx")
# 选择下拉框中的选项
def select_option_by_visible_text(selector, option_text):
select = Select(driver.find_element(By.CSS_SELECTOR, selector))
select.select_by_visible_text(option_text)
# 示例:通过可见文本选择下拉框选项
select_option_by_visible_text("#dropdown", "Option 2")
# 进行其他操作,例如提交表单等
# ...
time.sleep(1000)
# 关闭浏览器
driver.quit()
1、标签无法选中 ElementNotInteractableException: Message: element not interactable 元素不可见
2、在框架当中可能无法使用 Select,你可能会去选择直接填充输入框,当你高高兴兴填充完你会发现第三个问题
3、填充好的下拉框无法选中,因为下拉选择可能会需要触发对应的事件,当然你也可以去慢慢尝试找到需要执行的事件
# 拿到可以点击出下拉框的元素标签进行点击 显示下拉框
# 获取所有下拉框元素,遍历选择你需要的元素进行点击选中
# input_1 样式选择器 点击显示下拉框
# select_1 样式选择器 获取所有下拉框元素
# 需要匹配的元素
def auto_fill_select(input_1, select_1, text):
print("开始填充:" + text)
WebDriverWait(driver, 60).until(
EC.presence_of_element_located((By.CSS_SELECTOR, input_1))).click()
selects = WebDriverWait(driver, 60).until(
EC.presence_of_all_elements_located(
(By.CSS_SELECTOR, select_1))
)
for element in selects:
if element.text == text:
element.click()
break
ElementNotInteractableException
其实这是因为某些样式布局需要在一定条件下才会出现,你需要保证当你使用某个样式选择器时,它存在页面上
又或者你代码中的速度太快,新的样式还没有加载出来,那么你也可能选择不到,你可以暂时的等待元素加载
比如:下拉的元素可能只有下拉框出现时才可以获取
? 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
? 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。
? 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。
? 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。
? 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。
? 保持关注我的博客,让我们共同追求技术卓越。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。