【问题标题】:getText between tags with Selenium使用 Selenium 在标签之间获取文本
【发布时间】:2013-05-30 03:56:14
【问题描述】:

我正在尝试解析以下 XML 文件,以便获取一些属性。我需要做的一件事是验证标签之间的内容不为空。为此,我虽然可以使用为 web 元素提供的 getText 方法。

XML 文件:

<results>
    <result index="1">
        <track>
            <creator>Cool</creator>
            <album>Amazing</album>
            <title>Awesome and Fun</title>
        </track>
    </result>
</results>

我的解析和获取我想要的代码如下(请记住,结果不止一个):

boolean result = false;

driver.get(url);

List<WebElement> result_list = driver.findElements(By.xpath(".//result"));

if (result_list.size() == num_results) {

try {
    for (int i = 0; i < result_list.size(); i++) {
    WebElement track = result_list.get(i).findElement(By.xpath(".//track"));

    WebElement creator = track.findElement(By.xpath(".//creator"));
            System.out.println(creator.getText());
    track.findElement(By.xpath(".//album"));
    track.findElement(By.xpath(".//title"));
    }
    result = true;
}
catch (Exception e) {
    result = false;
}
}       
return result;

问题在于,当创建者标记之间明显存在文本时,System.out.println 调用会返回一个空字符串。任何帮助将不胜感激!

【问题讨论】:

  • 哪个System.out.println() 打电话?另外,你怎么知道,没有任何类型的Exception
  • 你是如何加载 xml 的?这是在浏览器中,是哪一个?

标签: java xml selenium


【解决方案1】:

这里的问题很可能是将该 xml 文件加载到浏览器中使您的 xml 文档更改为浏览器本身的 html 解释。在 Chrome 中加载它会生成一个 &lt;track&gt;&lt;/track&gt; 标记,它会确认您的输出是一个空白字符串。

我会查看 xml 解析器,而不是尝试通过自动化工具来执行此操作。

【讨论】:

  • 是的,这就是我切换到的。教授为这项工作提出了错误的工具。感谢您帮助我跳出框框思考!
猜你喜欢
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 2014-04-04
  • 2021-04-04
  • 2019-10-28
相关资源
最近更新 更多