jwplayer getDuration可以在chrome控制台中工作,但不能在带有IJavaScriptExecutor的C#中工作

jwplayer getDuration可以在chrome控制台中工作,但不能在带有IJavaScriptExecutor的C#中工作,c#,javascript,google-chrome,selenium-webdriver,jwplayer,C#,Javascript,Google Chrome,Selenium Webdriver,Jwplayer,我在使用jwplayers getDuration命令时遇到问题。我目前最好的猜测是,这可能是C#的javascript执行器的翻译问题。谢谢大家 这是失败的C#代码: 这是在Chrome控制台中工作的Javascript jwplayer().seek(jwPlayer().getDuration()) 这个代码有效 executor.ExecuteScript( "jwplayer().seek(45);", "" ); 此代码失败 executor.ExecuteScript( "jw

我在使用jwplayers getDuration命令时遇到问题。我目前最好的猜测是,这可能是C#的javascript执行器的翻译问题。谢谢大家

这是失败的C#代码:

这是在Chrome控制台中工作的Javascript

jwplayer().seek(jwPlayer().getDuration())
这个代码有效

executor.ExecuteScript( "jwplayer().seek(45);", "" );
此代码失败

executor.ExecuteScript( "jwplayer().getDuration();", "" );
我收到的错误是:

unknown error: Runtime.evaluate threw exception: TypeError: Cannot read property 'click' of null
(会话信息:chrome=35.0.1916.153)
(驱动程序信息:chromedriver=2.10.267521,platform=Windows NT 6.1 SP1 x86_64)

我不确定执行程序的解释和返回是否有问题

但是我在试图获取Jwplayer中的持续时间时也遇到了一些问题,并发现如果您使用Jwplayer().getDuration只有在事件内部使用时才能正常工作,例如
onReady
onPlay
onTime
。 若你们试图在玩家准备好之前使用它,它将不会返回任何东西

为了了解它是如何工作的,我创建了四个
Jwplayer
,有和没有
事件

你可以在家里体验这种行为

jsfiddle-

下面是JSFIDLE中使用的相同代码

jwplayer('player').setup({

            file: 'http://video-js.zencoder.com/oceans-clip.mp4',
            primary:'html5',
            stretching: 'exactfit',         
            autostart: true,

        });     

jwplayer('player2').setup({

            file: 'http://video-js.zencoder.com/oceans-clip.mp4',
            primary:'html5',
            stretching: 'exactfit',         
            autostart: true,

        }); 
jwplayer('player3').setup({

            file: 'http://video-js.zencoder.com/oceans-clip.mp4',
            primary:'html5',
            stretching: 'exactfit',         
            autostart: true,

        }); 
jwplayer('player4').setup({

            file: 'http://video-js.zencoder.com/oceans-clip.mp4',
            primary:'html5',
            stretching: 'exactfit',         
            autostart: true,

        });
var time1  = jwplayer('player').getDuration();
$("#player_time1").text(time1);//wont show anything at all

jwplayer('player2').onReady(function(){
var time2  = jwplayer('player2').getDuration();
$("#player_time2").text(time2);//will show time duration as -1

});

jwplayer('player3').onPlay(function(){
var time3  = jwplayer('player3').getDuration();
$("#player_time3").text(time3);//will show time duration as -1
// but if click on play and pause it will show correct time
});

jwplayer('player4').onTime(function(){

var time4  = jwplayer('player4').getDuration();
 var time45 = jwplayer('player4').getPosition()
$("#player_time4").text(time4);//it works 
    $("#player_time45").text(time45);//it works 
});

希望它能提供一些有用的信息:)

在这种情况下,有没有办法提供链接?这是指向API的链接。除此之外,我不能透露任何进一步的信息。对不起,我真的无法调试这个…这是我们的网站,它工作正常,因为我们的播放器在这里的网页中运行。我们从来没有在C#中真正测试过。我明白了。谢谢你的帮助。在C语言中没有什么区别,因为我只是将它们作为Javascript命令执行。我想这实际上可能与遗嘱执行人如何解释和返回有关。我可能需要一些特殊的语法或类似的东西。是的,理论上它不应该有什么区别,但你永远不会知道这些东西。
jwplayer('player').setup({

            file: 'http://video-js.zencoder.com/oceans-clip.mp4',
            primary:'html5',
            stretching: 'exactfit',         
            autostart: true,

        });     

jwplayer('player2').setup({

            file: 'http://video-js.zencoder.com/oceans-clip.mp4',
            primary:'html5',
            stretching: 'exactfit',         
            autostart: true,

        }); 
jwplayer('player3').setup({

            file: 'http://video-js.zencoder.com/oceans-clip.mp4',
            primary:'html5',
            stretching: 'exactfit',         
            autostart: true,

        }); 
jwplayer('player4').setup({

            file: 'http://video-js.zencoder.com/oceans-clip.mp4',
            primary:'html5',
            stretching: 'exactfit',         
            autostart: true,

        });
var time1  = jwplayer('player').getDuration();
$("#player_time1").text(time1);//wont show anything at all

jwplayer('player2').onReady(function(){
var time2  = jwplayer('player2').getDuration();
$("#player_time2").text(time2);//will show time duration as -1

});

jwplayer('player3').onPlay(function(){
var time3  = jwplayer('player3').getDuration();
$("#player_time3").text(time3);//will show time duration as -1
// but if click on play and pause it will show correct time
});

jwplayer('player4').onTime(function(){

var time4  = jwplayer('player4').getDuration();
 var time45 = jwplayer('player4').getPosition()
$("#player_time4").text(time4);//it works 
    $("#player_time45").text(time45);//it works 
});