Splinter对象没有属性点击

时间:2014-06-26 17:55:37

标签: python attributeerror splinter

我试图从教育部下载一个文件,这是我迄今为止的完整代码:

from splinter import Browser
import time

br = Browser()
br.visit('http://nces.ed.gov/ipeds/cipcode/resources.aspx?y=55')
br.find_by_xpath('//*[id@"ct100_ct100_CIPContent_ContentPlaceHolder1_LinkButton_FINALCIPtoSOCcrosswalk"]').click()

# give myself a delay to visually inspect that it's working
time.sleep(5)
br.quit()

这是我得到的完整追溯

File "crosswalksplinter.py", line 9, in <module>
 br.find_by_xpath('//*[id@"ct100_ct100_CIPContent_ContentPlaceHolder1_LinkButton_FINALCIPtoSOCcrosswalk"]').click()
File "/usr/lib/python2.6/site-packages/splinter/element_list.py", line 75, in __getattr__
 self.__class__.__name__, name))
AttributeError: 'ElementList' object has no attribute 'click'

我已点击&#34;点击&#34;在此之前的其他链接上,所以我不确定这次是什么问题。有谁知道我为什么会收到这个错误,如果有办法解决它?

1 个答案:

答案 0 :(得分:1)

根据错误消息,看起来br.find_by_xpath返回的内容是一个列表,而不是单个元素。 splinter docs确认了这一点:

  

Splinter提供了6种方法来查找页面中的元素,每种方法对应一种选择器类型:css,xpath,tag,name,id,value。 ...这些方法中的每一个都返回一个包含找到的元素的列表。

它还说:

  

您可以使用第一个快捷方式获取第一个找到的元素:
  first_found = browser.find_by_name('name').first

尝试点击第一个元素:

br.find_by_xpath('//*[id@"ct100_ct100_CIPContent_ContentPlaceHolder1_LinkButton_FINALCIPtoSOCcrosswalk"]').first.click()

或使用列表索引:

br.find_by_xpath('//*[id@"ct100_ct100_CIPContent_ContentPlaceHolder1_LinkButton_FINALCIPtoSOCcrosswalk"]')[0].click()