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