需求使用selenium 点击下拉框选中【是】选项。代码方法1# 点击下拉框 driver.find_element(xpath,//*[idbasicProcessDetail]/div[2]/div[2]/div[1]/div/div[2]/div/div/div/div[1]/div[2]/form/div[11]/div[1]/div/div/div[1]/div[1]/div/i).click() # 点击对应的选项 driver.find_element(xpath,//*[idbasicProcessDetail]/div[2]/div[2]/div[1]/div/div[2]/div/div/div/div[1]/div[2]/form/div[11]/div[1]/div/div/div[1]/div[2]/ul[2]/li[1]).click()缺点无法批量操作每次都得复制很长的xpath 表达式费时费力。方法2def select_option(label_text, option_text): 点选操作 print(f点选【{label_text}】, end- ) try: # 等待元素加载完成 wait WebDriverWait(driver, 10) # 增加等待时间到10秒 # 使用XPath定位包含特定文本的元素然后找到其后的下拉框按钮 dropdown_button wait.until(EC.element_to_be_clickable((By.XPATH, f//label[contains(text(), {label_text})]/following-sibling::div//div[contains(class, ivu-select-selection)]))) # 点击下拉框按钮 dropdown_button.click() # 使用XPath定位并点击特定的选项 option_button wait.until(EC.element_to_be_clickable((By.XPATH, f//label[contains(text(), {label_text})]/following-sibling::div//div[contains(class, ivu-select-dropdown)]//li[contains(text(), {option_text})]))) option_button.click() print(成功!) except Exception as e: print(失败!) # 调用 select_option(是否保护:, 是)优点可封装函数方便批量操作类 似的下拉框。讲解01 分析关于第二个XPath表达式 的理解和分析功能用于定位包含特定文本的li元素它包含了两个主要部分1.定位包含特定文本的label元素//label[contains(text(),{label_text})]这部分XPath用于定位所有label元素这些元素的文本包含您提供的label_text变量。{label_text}是一个占位符代表您想要定位的标签文本例如“是否双板卡保护:”。2.定位label元素的后续兄弟节点中的div元素/following-sibling::div这表示我们想要找到label元素的后续兄弟节点即紧随其后的元素。3.定位div元素中的div元素该div包含ivu-select-dropdown类//div[contains(class,ivu-select-dropdown)]这表示我们想要找到包含ivu-select-dropdown类的div元素。4.定位包含特定文本的li元素//li[contains(text(),{option_text})]这表示我们想要找到所有li元素这些元素的文本包含您提供的option_text变量。{option_text}是一个占位符代表您想要选择的选项文本例如“是”或“否”。整个XPath表达式的组合用于找到包含特定文本的label元素然后定位其后的div元素该div包含下拉菜单 。最后它定位并点击包含特定选项文本的li元素。请注意XPath表达式需要根据您的网页结构和实际情况进行调整。如果您的网页结构有所不同请相应地修改XPath表达式。思考为什么不能直接用//li[contains(text (),{option_text})]呢01 定位的准确性//li[contains(text(),{option_text})]是一个相对宽泛的定位方式它可能会匹配到页面上任何包含option_text的li元素而不一定是下拉菜单中的选项。这意味着这个XPath可能会匹配到多个元素而不是您想要点击的特定选项。02 性能如果页面上有多个li元素包含option_text那么使用这种定位方式可能会导致性能问题因为它需要遍历更多的元素来找到匹配的元素。03 可维护性如果页面上li元素的布局或结构发生变化那么使用这种定位方式可能会导致定位失败。相比之下使用更具体的XPath如//label[contains(text(),{label_text})]/following-sibling::div//div[contains(class,ivu-select -dropdown)]//li[contains(text(),{option_text})]可以确保更准确地定位到特定的选项并且对页面的变化更加鲁棒。总之虽然使用//li[contains(text(),{option_text})]是可行的但它可能不如使用更具体的XPath那样准确和可靠。在实际应用中建议根据页面的具体情况选择最合适的定位方式。最后下方这份完整的软件测试 视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】​​​软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。