Python Selenium循环列表拼接XPath定位元素触发TypeError报错求助
问题解决:循环拼接XPath触发TypeError的修复方案
核心问题1:XPath字符串拼接语法错误
你写的XPath代码里引号没有正确闭合,"//input[@name='FirstName"+item+""")这段缺少了闭合的单引号和双引号,导致生成的字符串格式混乱,直接触发类型错误。核心问题2:变量名拼写错误
代码里把Firstname误写成Firsname,调用get_dom_attribute时会因为找不到正确变量出现异常。修正后的完整代码
用f-string拼接字符串,既能避免引号配对错误,代码可读性也更强:keylist = ['1468384','1374165','1335571','1322769'] for item in keylist: # 优化URL拼接方式 driver.get(f"mylinkshow_by_id={item}") # 用f-string生成正确的XPath Firstname = driver.find_element(By.XPATH, f"//input[@name='FirstName{item}']") # 修正变量名拼写,获取元素值 value1 = Firstname.get_dom_attribute("value")额外优化建议
循环中页面加载可能存在延迟,建议加上显式等待避免元素定位失败:from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC keylist = ['1468384','1374165','1335571','1322769'] wait = WebDriverWait(driver, 10) for item in keylist: driver.get(f"mylinkshow_by_id={item}") # 等待元素加载完成再定位 Firstname = wait.until(EC.presence_of_element_located((By.XPATH, f"//input[@name='FirstName{item}']"))) value1 = Firstname.get_dom_attribute("value")
内容的提问来源于stack exchange,提问作者Usama Khalid
相关产品推荐
相关产品推荐

