jwplayer getDuration在chrome控制台中工作,但不在C#中使用IJavaScriptExecutor

时间:2014-06-30 19:37:33

标签: c# javascript google-chrome selenium-webdriver jwplayer

我遇到了jwplayers getDuration命令的问题。我目前最好的猜测是它可能是C#的javascript执行器的翻译问题。谢谢大家。

这是失败的C#代码:

IJavaScriptExecutor executor = ( IJavaScriptExecutor )Driver;
                    executor.ExecuteScript( "jwplayer().seek(jwPlayer().getDuration());", "" );

这是适用于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)

1 个答案:

答案 0 :(得分:2)

我不确定执行者解释和返回是否有问题。

但是我在Jwplayer尝试获取持续时间时遇到了一些问题,并且发现如果jwplayer().getDuration仅在onReady,{{1}等事件中使用时onPlay正常工作}和onTime。 如果你在玩家准备好之前尝试在外面使用它,它将不会返回任何内容。

要了解它是如何运作的,我创建了四个Jwplayer,包括和不包含events

您可以在

中体验行为here

jsfiddle - http://jsfiddle.net/hiteshbhilai2010/6YyXH/20/

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

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 
});

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