我尝试使用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()
错误:
重播= driver.find_element_by_xpath(“”“ / html / body / div [2] / div / div [4] / div [3] /页脚/ div / div [2] / div / div [1] / div [5] /按钮“”“)[0] TypeError:“ WebElement”对象不可下标
谢谢:)
答案 0 :(得分:1)
此错误消息...
TypeError 'WebElement' object is not subscriptable
...表示您已将索引附加到不受支持的WebElement。
仅 list 元素可以建立索引。但是,在此代码行中:
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]
等作为 index 只能与 list 关联。
有两种解决方法。
在第一种方法中,您可以删除 index ,即[0]
,在这种情况下,replay
将分配有通过locator strategy如下:
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()
创建 list 而不是使用find_elements_by_xpath()
并从 List < / em>使用索引[0]
,如下所示:
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]
您可以在以下位置找到一些相关的讨论
答案 1 :(得分:0)
根据@KunduK的评论,删除[0]
。
不建议您使用绝对xPath。
如果有几个按钮,您需要先在xpath中使用[0]
,如下所示:
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()
答案 2 :(得分:0)
find_element_by_xpath
返回找到的第一个元素(不是数组)
find_element_by_xpath(...).click()
或
find_elements_by_xpath(...)[0].click()