如何通过xpath从selenium webdriver中的javascript代码获取特定文本

时间:2016-10-22 08:35:25

标签: javascript java selenium xpath selenium-webdriver

我希望得到一个特定的文字行,"网址"在"剪辑下:"这段代码。

我试过

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

但它正在获取整个文本。我只想得到网址。对此有什么解决方案吗?。

<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 个答案:

答案 0 :(得分:1)

我认为你无法从xpath获取网址。

获得文本后,就像使用正文一样,你应该使用正则表达式获取你的网址。

也许是这样的:

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

这将保存匹配的网址。

这里有一个关于如何集成代码的示例:

// 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];
}