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

标签 javascript java selenium xpath selenium-webdriver

我想获取特定的文本行,即此代码的“clip:”下的“URL”。

我试过了

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>

最佳答案

我认为您无法从 xpath 获取 url。

获得文本后,就像您所做的那样,您应该使用正则表达式来获取您的网址。

也许是这样的:

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

关于javascript - 如何通过 xpath 从 selenium webdriver 中的 javascript 代码获取特定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40190023/

相关文章:

javascript - 使用 Ajax HTML 输出的分页被破坏

java - 在 Java 中如何将一个 double 分成 3 个较小的 double 并将这些新 double 设置为变量?

java - 使用 AtlasMap 将 xml 转换为 json

python - 如何在 python 中为 selenium webdriver 导入和导出 FireFox 配置文件

javascript - 将滚动条添加到 d3.layout.tree()

javascript - 如何检查更改事件的复选框状态

java - 如何使用 Java 在 Selenium WebDriver 中按 "TAB"然后按 "ENTER"键?

c# - Selenium XPath 无法识别表格单元格中的文本

javascript - 如何使用 CSS3 设置 "Read More"的样式

windows-7 - 在 Windows 7 中使用 java jre6 而不是 jre7