Python Selenium循环构造XPath时整数转字符串拼接报错如何解决?
问题原因
报错是因为你定义的x是整数类型,Python不允许直接将整数和字符串做+拼接操作。同时你原来的代码混用了字符串拼接和format()方法,逻辑存在问题,而且你写的是if判断不是循环,只会执行一次,达不到遍历290000到300000所有数值的效果。
解决方法
你可以直接用f-string(Python3.6+支持)来做字符串插值,不需要手动做类型转换,同时把if改成for循环遍历目标数值范围,修改后的代码如下:
# 遍历290000到299999的所有整数(range左闭右开,所以结束值写300000) for x in range(290000, 300000): # f-string会自动转换变量类型,无需手动转字符串 xpath_string = f'//*[@id="module-{x}"]/div/div/div[2]/div[2]/form/div/button/img' driver.find_element_by_xpath(xpath_string).click() print("Successful")
如果你需要兼容旧版本Python,也可以用format()方法实现,写法如下:
for x in range(290000, 300000): xpath_string = '//*[@id="module-{}"]/div/div/div[2]/div[2]/form/div/button/img'.format(x) driver.find_element_by_xpath(xpath_string).click() print("Successful")
额外注意事项
- 如果对应id的元素可能不存在,建议加异常捕获逻辑,避免遇到不存在的元素直接中断程序
- 高版本Selenium已经废弃了
find_element_by_xpath方法,建议统一使用driver.find_element(By.XPATH, xpath_string),使用前需要先导入from selenium.webdriver.common.by import By
内容的提问来源于stack exchange,提问作者Giri
相关产品推荐
相关产品推荐

