jwplayer getDuration работает в консоли Chrome, но не в C # с IJavaScriptExecutor

#c# #javascript #google-chrome #selenium-webdriver #jwplayer

#c# #javascript #google-chrome #selenium-webdriver #jwplayer

Вопрос:

У меня возникли проблемы с командой getDuration jwplayers. Мое текущее лучшее предположение заключается в том, что это может быть проблема с переводом с javascript-исполнителем C #. Спасибо всем.

Это сбой кода C #:

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

Это Javascript, который работает в консоли Chrome.

 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, платформа = Windows NT 6.1 SP1 x86_64)

Комментарии:

1. Есть ли способ предоставить ссылку в этом случае?

2. support.jwplayer.com/customer/portal/articles/… Это ссылка на API. Помимо этого, я не могу раскрывать какую-либо дополнительную информацию. Извините.

3. Я не могу отладить это на самом деле… это наш сайт, и это работает нормально, так как наш проигрыватель запущен на веб-странице здесь. Мы никогда не тестировали его на C #.

4. Я понимаю. Спасибо за вашу помощь. Это действительно не должно иметь значения для C #, потому что я просто выполняю их как команды Javascript. Я думаю, что это может быть связано с тем, как исполнитель интерпретирует и возвращает. Возможно, мне нужен какой-то специальный синтаксис или что-то в этом роде.

5. Да, теоретически это не должно иметь значения, но вы никогда не знаете, с такими вещами.

Ответ №1:

Я не уверен, что это проблема с интерпретацией и возвратом executor.

Но я тоже столкнулся с некоторой проблемой при попытке получить продолжительность Jwplayer времени и обнаружил, что если вы jwplayer().getDuration работаете правильно, только если используется внутри событий, таких как onReady , onPlay и onTime . Если вы попытаетесь использовать его снаружи, прежде чем player будет готов, он ничего не вернет.

Чтобы понять, как это работает, я создал четыре Jwplayer с и без events и

вы можете испытать поведение здесь в

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

Надеюсь, это даст некоторую полезную информацию 🙂