Как получить определенный текст из кода javascript в selenium webdriver с помощью xpath

#javascript #java #selenium #xpath #selenium-webdriver

#javascript #java #селен #xpath #selenium-webdriver

Вопрос:

Я хочу получить определенную строку текста, «URL» под «clip:» этого кода.

Я пытался

 driver.findElement(By.xpath("//*[@id="player"]/script[2]/text()")).getText();
  

но он получает весь текст. Я только хочу получить URL. Есть ли какое-либо решение для этого?.

 <div id="player">     
<script type='text/javascript'>
    flowplayer("thisPlayer", {
        src: "http://example.com.swf",
                    scaling: 'orig',
        wmode: "opaque"
    },  {
        key: "some key",
        clip: {
            url: 'http://someurl/example.mp4',
                            scaling: 'fit',
                            autoPlay: false,
                            autoBuffering: true,            
            provider: 'lighttpd'
        },

         plugins: {
                            lighttpd: {
                url: "http://example.com/flowplayer.pseudostreaming-byterange-3.2.11.swf"
            }

        }
    });
    </script>
</div>
  

Ответ №1:

Я думаю, вы не смогли получить URL из xpath.

После того, как у вас будет текст, как вы и делали, вам следует использовать регулярное выражение для получения вашего URL.

Может быть, что-то вроде этого:

 /url:s "([^"] )"/
  

Это сохранит URL-адрес при совпадениях.

Вот пример того, как интегрировать в ваш код:

 // From your example
var scriptText = driver.findElement(By.xpath("//*[@id="player"]/script[2]/text()")).getText();

// run the regexp on the script text
var matches = scriptText.match(/url:s "([^"] )"/);

// check if you found something
if (matches.length > 0) {
    var url = matches[1];
}