当我尝试单击Google中的链接时得到TypeError: 'FirefoxWebElement' object is not subscriptable
:
这是发生此错误的代码:
button_element = driver.find_element_by_xpath("//span[contains(@class,'cTsG4')]")
button_element[0].click()
知道发生了什么吗?
答案 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(对象)不是