使用类和文本查找由Ajax-json响应加载的元素的xpath

时间:2014-09-30 09:54:50

标签: ajax json text xpath classname

我有一个像

这样的元素
<td class="google-visualization-table-th gradient google-visualization-table-sorthdr">
Project Name
<span class="google-visualization-table-sortind">▼</span>
</td>

我试过

 driver.findElement(By.xpath("//td[contains(@class, 'google-visualization-table-th') and normalize-space(text()) = 'Project Name']")

但它不起作用。基本上它是Column头的代码,我需要识别每个列标题并打印标题是否存在。

2 个答案:

答案 0 :(得分:0)

我们不知道您使用的是哪个版本的XPath,但根据具体版本,text()表示不同的内容。

我怀疑span(奇怪的字符▼)的文字内容也是td/text()的一部分。这是因为text() 意味着:

  

返回上下文节点的rext节点

在这种情况下,它意味着:

  

返回上下文节点的文本节点及其所有后代的文本节点。

在谓词的后半部分也使用contains()

//td[contains(@class, 'google-visualization-table-th') and contains(.,'Project Name')]

答案 1 :(得分:0)

现在解决了,元素没有被识别,因为它们被加载到iframe中。我使用下面的代码o切换到iframe,然后执行常规操作来跟踪元素。

WebDriverWait wait = new WebDriverWait(driver, 200);
By by = By.id("iframe id");
try {
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(by));

感谢大家的帮助。