Javascript 如何修复Youtube API的getPlayerState以返回int值?
错误: selenium.common.exceptions.JavascriptException:消息:javascript错误:无法读取null的属性“getPlayerState” 或 消息:javascript错误:getPlayerState不是函数 HTML代码:Javascript 如何修复Youtube API的getPlayerState以返回int值?,javascript,python,selenium,youtube-api,youtube-javascript-api,Javascript,Python,Selenium,Youtube Api,Youtube Javascript Api,错误: selenium.common.exceptions.JavascriptException:消息:javascript错误:无法读取null的属性“getPlayerState” 或 消息:javascript错误:getPlayerState不是函数 HTML代码: <div id="movie_player"></div> 理想情况下,我希望getPlayerState()将播放器的状态返回为-1、0、1、2、3、4、5,这将允许我继续执行下一步。如果状态
<div id="movie_player"></div>
理想情况下,我希望getPlayerState()将播放器的状态返回为-1、0、1、2、3、4、5,这将允许我继续执行下一步。如果状态代码为0(或已完成),则使用selenium.execute_脚本加载下一首歌曲,并从Python脚本加载videoId
编辑:键入console.log(player.getPlayerState())打印播放器的实际值。因此getPlayerState()是一个函数
<script src="http://www.youtube.com/player_api"></script>
<script>
// create youtube player
var player;
var video_id = 'qCTMq7xvdXU';
let player_vars = {"playsinline": 1, "origin": "https://www.youtube.com"}
function onYouTubeIframeAPIReady() {
player = new YT.Player('movie_player', {
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// 4. The API will call this function when the video player is ready.
function onPlayerReady(event) {
event.target.playVideo();
}
// 5. The API calls this function when the player's state changes.
// The function indicates that when playing a video (state=1),
// the player should play for six seconds and then stop.
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING && !done) {
setTimeout(stopVideo, 6000);
done = true;
}
}
function stopVideo() {
player.stopVideo();
}
function cueVideo(url) {
player.cueVideoByUrl(url);
}
function VideoReady(id) {
player.loadVideoById(id);
}
self.driver.execute_script(
"ytplayer = document.getElementById('player');")
player_status = self.driver.execute_script(
"return ytplayer.getPlayerState();")
print(player_status)