硒:TypeError:“ FirefoxWebElement”对象不可下标

时间:2019-07-18 00:15:15

标签: python selenium firefox selenium-webdriver

当我尝试单击Google中的链接时得到TypeError: 'FirefoxWebElement' object is not subscriptable

enter image description here

这是发生此错误的代码:

    button_element = driver.find_element_by_xpath("//span[contains(@class,'cTsG4')]")
    button_element[0].click()

知道发生了什么吗?

2 个答案:

答案 0 :(得分:1)

该错误是由于find_element_by_xpath返回一个元素而不是列表,因此返回了TypeError: 'FirefoxWebElement' object is not subscriptable。但是,下标到底是什么意思呢?好吧,这基本上意味着该对象实现了__getitem__()方法。换句话说,它描述的是“容器”对象,这意味着它们包含其他对象。这包括列表,元组和字典。 就您而言,button_element无法订阅。

因此,您只需要通过button_element.click()而不是button_element[0].click()来单击按钮。

如果有许多按钮都希望满足XPath的要求,则可以使用find_elements_by_xpath(元素而不是元素),这将返回一个列表,您可以通过迭代其元素来操作。

答案 1 :(得分:0)

脚本中有一个轻微的错字,应该是:

button_element = find_elements_by_xpath("//span[contains(@class,'cTsG4')]")

由于它返回Xpath列表,因此可以使用button_element [0] .click()

安装

find_element_by_xpath("//span[contains(@class,'cTsG4')]")

因为它本身返回找到的第一个Xpath,所以button_element [0] .click()将

生成TypeError,因为List是可订阅的,但Single Element(对象)不是