如何编写Selenium脚本检测Angular站点下拉框选中项是否为产品图片
Selenium校验Angular站点下拉选中值实现方案
你提供的下拉框带有固定唯一id selBItemType,直接通过id定位即可,无需依赖Angular生成的动态_ngcontent属性,避免版本迭代后属性变更导致定位失效。
实现步骤(Python 示例)
- 首先导入Selenium内置的Select工具类,专门用于处理原生select下拉框
- 定位下拉框元素并初始化Select实例,加入显式等待适配Angular异步渲染逻辑
- 获取当前选中项的文本,和目标值「Product Images(产品图片)」做校验
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait # 初始化驱动(这里以Chrome为例) driver = webdriver.Chrome() driver.get("你的站点访问地址") # 等待下拉框加载完成,避免Angular渲染延迟导致定位失败 wait = WebDriverWait(driver, 10) select_ele = wait.until(EC.presence_of_element_located((By.ID, "selBItemType"))) # 初始化Select对象 select = Select(select_ele) # 获取当前选中项的文本 current_selected_text = select.first_selected_option.text.strip() # 校验是否为产品图片 target_text = "Product Images" if current_selected_text == target_text: print("校验通过,当前选中值为产品图片") else: print(f"校验失败,当前选中值为{current_selected_text},预期为产品图片") # 若需要自动选中产品图片,可调用以下方法 # select.select_by_visible_text(target_text) # 若Angular绑定的表单值未触发更新,可手动触发change事件 # driver.execute_script("arguments[0].dispatchEvent(new Event('change'))", select_ele)
如果你站点的下拉是Angular自定义封装的样式,实际隐藏了原生select,就不能用Select类处理,需要模拟点击展开下拉框,再点击对应选项的方式实现,代码逻辑需要对应调整。
内容的提问来源于stack exchange,提问作者Abhimanyu sharma
相关产品推荐
相关产品推荐

