Selenium getText()不起作用



因此,对于我的项目,我使用Selenium来检查DOM中是否有重要字段。我分析的XML如下:

<results>
<result index="1">
<track>
<creator>God</creator>
</track>
</result>
<results>
对于第一件事,我通过运行 获得所有结果标记作为webElements的列表:
List<WebElement> result_list = driver.findElements(By.tagName("result"));
然后我执行一个for循环,通过运行 来检查创建者标签是否存在
try {
for (int i = 0; i < result_list.size(); i++) {
WebElement track = result_list.get(i).findElement(By.tagName("track"));
    System.out.println(track.findElement(By.tagName("creator")).getText());
System.out.println(track.getTagName());
System.out.println(track.getAttribute("creator"));
}
result = true;
}
catch (Exception e) {
result = false;
}

我插入了打印语句,以便查看每个标签在说什么。我是硒的新手,所以我只是想确保我正确地迭代web元素,这意味着每次调用getText和getAttribute对于循环的每次迭代应该是不同的。唯一的问题是,每次getText()调用都会输出一个空字符串,每次getAttribute()调用都会输出一个空字符串。为什么会发生这种情况?下面的输出。

<empty string> (nothing is printed, just illustrating the empty string)
track
null

任何帮助都将非常感激!

Selenium不处理XML。它只是HTML。请阅读文档,非常清楚。
可能有一个插件

WebElement.getAttribute(String)没有返回您所期望的结果,因为对什么是属性有一点误解。元素的属性是在元素的标签('id', 'name', 'style'等)中定义的。

你要做的是寻找<track>的子元素,而不是你要做的是寻找<track creator="a_creator">,这将返回你所期望的。

我从来没有能够得到WebElement.findElement()工作在另一个WebElement没有下拉到xpath。比如:

WebElement parent = driver.findElement(By.id("parent"));
WebElement child = parent.findElement(By.tagName("child"));

似乎从来都不起作用。但是,在这种情况下,类似于:

WebElement parent = driver.findElement(By.id("parent"));
WebElement child = parnet.findElement(By.xpath(".//creator"));

应该工作。如果您是xpath新手,可以考虑快速浏览一些基本教程。

最新更新