Python 如何通过selenium单击此按钮,它总是说list对象没有属性';单击';

Python 如何通过selenium单击此按钮,它总是说list对象没有属性';单击';,python,selenium,Python,Selenium,我想通过selenium在google图像搜索中单击“显示更多结果”按钮 这一页是 页面应向下滚动4次,以便您可以看到按钮 html代码是: 我的代码在下面 from selenium import webdriver import time class ImgCrawler: def __init__(self,searchlink = None): self.link = searchlink self.soupheader = {'User-Ag

我想通过selenium在google图像搜索中单击“显示更多结果”按钮

这一页是

页面应向下滚动4次,以便您可以看到按钮

html代码是:

我的代码在下面

from selenium import webdriver
import time

class ImgCrawler:
    def __init__(self,searchlink = None):
        self.link = searchlink
        self.soupheader = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3176.2 Safari/537.36"}
        self.scrolldown = None
        self.jsdriver = None

    def getChromeCanary(self):
        self.jsdriver = webdriver.Chrome("f:\software\python\chromedriver_win32\chromedriver.exe")
        self.jsdriver.implicitly_wait(30)
        self.jsdriver.get(self.link)

    def scrollDownUseChromeCanary(self, scrolltimes = 1, sleeptime = 10):
        for i in range(scrolltimes):
            self.jsdriver.execute_script('window.scrollTo(0,document.body.scrollHeight);')
            time.sleep(sleeptime)

    def clickNextPage(self):
        return self.jsdriver.find_elements_by_css_selector("input.ksb._kvc").click()


if __name__ == '__main__':
    weblink = "https://www.google.com.hk/search?hl=en&site=imghp&tbm=isch&source=hp&biw=1461&bih=950&q=circle&oq=circle&gs_l=img.3..0l10.1497.3829.0.4548.10.9.1.0.0.0.185.1136.0j7.7.0....0...1.1.64.img..2.7.974...0i10k1.4YZkQiWXzGo"
    img = ImgCrawler(weblink)
    img.getChromeCanary()
    img.scrollDownUseChromeCanary(4,5)
    img.clickNextPage()

您需要指向查询的第一个元素:

self.jsdriver.find_elements_by_css_selector("input.ksb._kvc")[0].click()

要查找多个元素(这些方法将返回一个列表):

查找元素\…()
通常使用的方法

  • 要获取以下迭代的
    WebElements
    ,请执行以下操作:

    [element.text for element in driver.find_elements_by_tag_name('a')]
    
  • 如果没有唯一标识符,则按索引定位元素:

    driver.find_elements_by_class_name('some_class_name')[1]
    
在其他情况下,您只需使用返回单个
WebElement

试着替换

self.jsdriver.find_elements_by_css_selector("input.ksb._kvc").click()


为什么?只有一个按钮。
find\u elements\u by\u css\u selector
始终返回所有匹配元素的列表,对于一个或一百个,即使0也会给出一个空列表。尽管如此,您是对的,谢谢!它起作用了。但我不明白。我搜索网页的源代码。只有一个地方与“input.ksb.\u kvc”匹配。为什么返回很多?可能只有一个,您可以使用
print(len(self.jsdriver.find\u elements\u by\u css\u selector(“input.ksb.\u kvc”))检查结果。
,但类型是list
self.jsdriver.find_element_by_css_selector("input.ksb._kvc").click()