TypeError: 'WebElement' 对象不可订阅

新手上路,请多包涵

我尝试使用 Python 在 Spotify Web Player 中按下重播按钮,但出现此错误。如何在网络播放器中按下按钮?

 replay = driver.find_element_by_xpath("""/html/body/div[2]/div/div[4]/div[3]/footer/div/div[2]/div/div[1]/div[5]/button""")[0]
replay.click()

错误:

 replay = driver.find_element_by_xpath("""/html/body/div[2]/div/div[4]/div[3]/footer/div/div[2]/div/div[1]/div[5]/button""")[0]
TypeError: 'WebElement' object is not subscriptable

原文由 Hi3t 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 734
1 个回答

这个错误信息…

 TypeError 'WebElement' object is not subscriptable

…暗示您已将索引附加到不受支持的 WebElement


分析

只能索引 列表 元素。但是,在这行代码中:

 replay = driver.find_element_by_xpath("""/html/body/div[2]/div/div[4]/div[3]/footer/div/div[2]/div/div[1]/div[5]/button""")[0]


driver.find_element_by_xpath("""/html/body/div[2]/div/div[4]/div[3]/footer/div/div[2]/div/div[1]/div[5]/button""") 总是会返回 一个 WebElement 。因此,您不能通过任何索引访问元素,例如 [0][1] 等,因为 索引 只能与 list 关联。


解决方案

有两种方法可以解决这个问题。

  • 在第一种方法中,您可以删除 _索引_,即 [0] ,在这种情况下 replay 将分配给通过 定位器策略 识别的第一个匹配元素,如下所示:
   replay = driver.find_element_by_xpath("""/html/body/div[2]/div/div[4]/div[3]/footer/div/div[2]/div/div[1]/div[5]/button""")

  • 在另一种方法中,您可以使用 find_element_by_xpath() 创建一个 _列表_,而不是使用 find_elements_by_xpath() 并使用索引 [0] 20ef7 访问 列表 中的第一个元素:
   replay = driver.find_elements_by_xpath("""/html/body/div[2]/div/div[4]/div[3]/footer/div/div[2]/div/div[1]/div[5]/button""")[0]


参考

您可以在以下位置找到几个相关的讨论:

原文由 undetected Selenium 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题