Hi3*_*i3t 5 python selenium webdriver typeerror selenium-webdriver
我尝试使用 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()
Run Code Online (Sandbox Code Playgroud)
错误:
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
Run Code Online (Sandbox Code Playgroud)
这个错误信息...
TypeError 'WebElement' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
...意味着您已将索引附加到不受支持的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]
Run Code Online (Sandbox Code Playgroud)
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关联。
有两种方法可以解决该问题。
在第一种方法中,您可以删除索引ie,[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""")
Run Code Online (Sandbox Code Playgroud)
在另一种方法中,find_element_by_xpath()
您可以使用索引创建列表并使用索引访问列表find_elements_by_xpath()
中的第一个元素,而不是使用,如下所示:[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]
Run Code Online (Sandbox Code Playgroud)
您可以在以下位置找到一些相关讨论:
正如@KunduK评论的那样,删除[0]
.
您正在使用绝对 xPath,不建议这样做。
如果有几个按钮并且您需要首先[0]
在 xpath 中使用,如下所示:
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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
40572 次 |
最近记录: |