Spotify 网络播放器:Select 元素 'Play' 带有/硒的按钮
Spotify Webplayer: Select Element 'Play' Button w/ Selenium
我一直在尝试通过 selenium select Spotify 网络播放器上的 Play 按钮进行一系列测试,但一直无法成功定位它。我试过 CSS 选择器:
driver.find_element_by_css_selector("#header .button-primary").click()
和xpath:
driver.find_element_by_xpath("//button[@class=\"button-primary\"]")
这是我的错误调用堆栈:
Traceback (most recent call last): File "Spotify Dumbass.py", line
37, in test_spotify_dumbass
driver.find_element_by_css_selector("#header .button-primary").click() File
"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
line 396, in find_element_by_css_selector
return self.find_element(by=By.CSS_SELECTOR, value=css_selector) File
"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
line 684, in find_element
{'using': by, 'value': value})['value'] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
line 195, in execute
self.error_handler.check_response(response) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py",
line 170, in check_response
raise exception_class(message, screen, stacktrace) NoSuchElementException: Message: Unable to locate element:
{"method":"css selector","selector":"#header .button-primary"}
Stacktrace:
at FirefoxDriver.prototype.findElementInternal_ (file:///var/folders/Ne/NepmGbBUFwK7TxfPj5g0gE+++TI/-Tmp-/tmpSLKAhJ/extensions/fxdriver@googlecode.com/components/driver-component.js:10299)
at fxdriver.Timer.prototype.setTimeout/<.notify (file:///var/folders/Ne/NepmGbBUFwK7TxfPj5g0gE+++TI/-Tmp-/tmpSLKAhJ/extensions/fxdriver@googlecode.com/components/driver-component.js:603)
"play" 按钮在 iframe 中,在定位元素之前切换到它:
driver.switch_to.frame("app-player")
play = driver.find_element_by_id("play-pause")
play.click()
通过Javascript
控制
播放器有JS SDK吗?我可以使用 Javascript 发送 play/pause 命令吗?
播放按钮没有任何可观察的事件,也没有监听任何事件。播放只能由用户点击按钮触发。
我们当然在考虑创建一个 JS SDK;这是一个更大的项目,现在我们专注于快速发布 API 以打开一般的 Spotify 生态系统(目录、播放列表等)。
None 这些请求被置若罔闻,我们正在努力提供尽可能多的功能。
来自 Sptotify 的开发页面
我一直在尝试通过 selenium select Spotify 网络播放器上的 Play 按钮进行一系列测试,但一直无法成功定位它。我试过 CSS 选择器:
driver.find_element_by_css_selector("#header .button-primary").click()
和xpath:
driver.find_element_by_xpath("//button[@class=\"button-primary\"]")
这是我的错误调用堆栈:
Traceback (most recent call last): File "Spotify Dumbass.py", line 37, in test_spotify_dumbass driver.find_element_by_css_selector("#header .button-primary").click() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 396, in find_element_by_css_selector return self.find_element(by=By.CSS_SELECTOR, value=css_selector) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 684, in find_element {'using': by, 'value': value})['value'] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 195, in execute self.error_handler.check_response(response) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 170, in check_response raise exception_class(message, screen, stacktrace) NoSuchElementException: Message: Unable to locate element: {"method":"css selector","selector":"#header .button-primary"} Stacktrace: at FirefoxDriver.prototype.findElementInternal_ (file:///var/folders/Ne/NepmGbBUFwK7TxfPj5g0gE+++TI/-Tmp-/tmpSLKAhJ/extensions/fxdriver@googlecode.com/components/driver-component.js:10299) at fxdriver.Timer.prototype.setTimeout/<.notify (file:///var/folders/Ne/NepmGbBUFwK7TxfPj5g0gE+++TI/-Tmp-/tmpSLKAhJ/extensions/fxdriver@googlecode.com/components/driver-component.js:603)
"play" 按钮在 iframe 中,在定位元素之前切换到它:
driver.switch_to.frame("app-player")
play = driver.find_element_by_id("play-pause")
play.click()
通过Javascript
控制播放器有JS SDK吗?我可以使用 Javascript 发送 play/pause 命令吗?
播放按钮没有任何可观察的事件,也没有监听任何事件。播放只能由用户点击按钮触发。 我们当然在考虑创建一个 JS SDK;这是一个更大的项目,现在我们专注于快速发布 API 以打开一般的 Spotify 生态系统(目录、播放列表等)。 None 这些请求被置若罔闻,我们正在努力提供尽可能多的功能。
来自 Sptotify 的开发页面