Selenium脚本运行报AttributeError,列表对象无send_keys属性
报错根源
代码中调用的 find_elements_by_xpath() 是复数形式的元素定位方法,该方法返回值为所有匹配Xpath规则的元素组成的列表,列表类型本身不存在send_keys()方法,直接链式调用就会触发该AttributeError。
修复方案
- 若确认页面上仅存在1个id为Body的元素:
直接将定位方法名称去掉末尾的s,改为单数形式的find_element_by_xpath(),该方法会直接返回匹配到的第一个WebElement对象,对象本身支持send_keys()输入操作,修正后的代码为:
Selenium 4.0+版本已废弃所有body = driver.find_element_by_xpath(".//*[@id='Body']").send_keys("Body text")find_element_by_xxx格式的旧定位语法,推荐使用官方标准化的定位写法from selenium.webdriver.common.by import By body = driver.find_element(By.XPATH, ".//*[@id='Body']").send_keys("Body text") - 若页面上存在多个匹配id为Body的元素,需要对指定元素执行操作:
先通过复数定位方法拿到元素列表,再通过索引取出目标元素后调用send_keys(),示例写法:# 先获取所有匹配的元素组成的列表 body_element_list = driver.find_elements_by_xpath(".//*[@id='Body']") # 对列表中指定位置的元素执行输入操作 body_element_list[0].send_keys("Body text")
内容的提问来源于stack exchange,提问作者Summit
相关产品推荐
相关产品推荐

