如何使用PowerShell和Selenium获取下拉菜单的选中选项及对应值
问题原因
你之前的代码调用GetAttribute("innerText")获取的是整个下拉框根节点包含的所有子元素文本,所以会返回全部选项的文字内容,无法单独提取选中项。
解决方案
针对原生<select>标签实现的下拉框
这是最常见的下拉框实现方式,有两种常用取值方式:
- 直接获取选中项的value值
直接读取select元素的value属性即可,默认会返回当前选中 - 获取选中项的显示文本
先通过XPath定位到被标记为selected的option子元素,再读取文本即可:# 定位选中的option元素 $selectedOption = $ChromeDriver.FindElementByXPath('//*[@id="mbd"]/option[@selected]') # 读取选中项显示的文本 $selectedText = $selectedOption.Text # 也可以读取选中项的value属性 $selectedValue = $selectedOption.GetAttribute("value")
针对div等自定义元素模拟的下拉框
如果页面用的是非原生select的自定义下拉组件,通常选中项会有特殊的类名(比如active、selected)或者自定义属性标记选中状态,你需要对应调整XPath定位到选中节点再取值,示例:
$selectedOption = $ChromeDriver.FindElementByXPath('//*[contains(@class,"dropdown-item") and contains(@class,"selected")]') $selectedText = $selectedOption.Text
赋值到另一个同选项下拉框
拿到选中值之后,直接给目标下拉框赋值即可,原生select可以直接设置value属性,或者根据拿到的文本/value定位目标下拉框的对应选项触发选中。
内容的提问来源于stack exchange,提问作者Simply Uncensored
相关产品推荐
相关产品推荐

