1

我正在使用 JDev 运行一个 java 转换的 selenium 2.0 脚本。我有一个案例,我打开一个模式窗口并搜索一个类似的字符串%SomeText%,它会在它下面产生一个记录,w/n 相同的窗口。现在,我想确保它产生了我正在寻找的文本,如果我得到该文本,请在模态窗口中单击“确定”。任何想法如何做到这一点......我正在做以下事情:

//this is working
driver.findElement(By.id("_afrFilterpt1_afr__UISatr_afr_0_afr_AT1_afr__ATp_afr_t2_afr_c3::content")).sendKeys(Keys.RETURN); 

//this doesn't work, text given here is part of the text which is returned after search
assertTrue((driver.findElements(By.xpath("contains(text(),'Approved:Create Grade Ladder (AU_New Grade Ladder205, 2012-08-31)')")).size() > 0) ? true:false); 

//this works if above line is deleted, else this also does not work
driver.findElement(By.xpath("//button[text()='OK']")).click();  
4

1 回答 1

1

您可以编写第 2 行的另一种方法是 driver.getPageSource().contains(text);

其次,您的 xpath 不正确,因为它正在寻找包含“已批准:创建等级阶梯(AU_New Grade Ladder205, 2012-08-31)”作为参考节点的根节点尚未提供给 xpath。

简而言之,您正在寻找看起来像这样的标记:

<html>
  Approved:Create Grade Ladder (AU_New Grade Ladder205, 2012-08-31)
</html>

如果您从 w3schools 学习 xpath,这可能听起来有点令人困惑,但它很像目录。

默认情况下,您的引用从 / 开始,因此,标签必须包含您正在搜索的文本。除此之外, text() 只给你当前节点的文本,而不是它下面的节点。

举个例子

<html>
  <body>
   <div>Some text <span>with a span</span>.</div>
  </body>
</html>

如果你这样做了,driver.findElements(By.xpath("//div[contains(text(),'Some text with a span.')]")).size();你会发现它等于 0。

如果您只使用 xpath 选择文本节点,您就会明白为什么。见下图: Xpath 示例

于 2012-09-03T14:38:39.067 回答