Selenium下拉框字符串精确匹配问题求助
解决Selenium下拉框精确匹配问题
你遇到的问题根源是XPath中使用了contains(text(), ...)进行包含匹配,导致输入"LW"时会优先匹配到包含该字符串的"LWB"。要实现精确匹配,只需修改XPath的匹配逻辑:
修改方案
将包含匹配替换为精确文本匹配,如果担心元素文本存在前后空格,可搭配normalize-space()处理文本内容,避免空格干扰匹配结果。
核心修改代码片段
# 精确匹配并选择对应的职位选项 find_pos = init_webdriver.wait.until( EC.element_to_be_clickable( ( By.XPATH, # 用normalize-space处理文本前后空格,再做精确匹配 "//li[@class='with-icon' and normalize-space(text())='" + my_pos_string + "']" ), ) ) find_pos.click()
完整修改后的代码
# 检查是否选择了特定职位,或保持默认/空值 if str_sv_pos == "position" or str_sv_pos == "": pass else: try: # 点击下拉框容器 pos_dropdown_menu = init_webdriver.driver.find_element_by_xpath( "/html/body/main/section/section/div[2]/div/div[2]/div/div[1]/div[1]/div[4]/div" ) pos_dropdown_menu.click() # 从GUI输入框获取目标职位字符串 my_pos_string = str(str_sv_pos) # 精确匹配并选择对应的职位选项 find_pos = init_webdriver.wait.until( EC.element_to_be_clickable( ( By.XPATH, "//li[@class='with-icon' and normalize-space(text())='" + my_pos_string + "']" ), ) ) find_pos.click() except: pass
补充说明
normalize-space(text())会自动去除文本前后的空格,并将中间连续空格替换为单个空格,避免页面元素文本带空格导致匹配失败- 若确定元素文本无多余空格,直接使用
text()='" + my_pos_string + "'也能实现精确匹配,但normalize-space()的写法兼容性更强
内容的提问来源于stack exchange,提问作者exec85
相关产品推荐
相关产品推荐

