在selenium

时间:2017-09-05 04:35:43

标签: java selenium xpath

我在这里有一个问题,我需要使用selenium搜索确切的文本。我想搜索具有值“SER20170905111755”的确切文本,但实际上,页面上还有另一个类似的文本,其值为“SER20170905111755 - AF-CR-613”。

我尝试过使用此

String text = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(., 'SER20170905104010')]"))).getText();

它返回“SER20170905111755 - AF-CR-613”给我。然后我尝试了

String text = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[text()='SER20170905104010']"))).getText();

它抛出TimeOut异常。似乎无法找到文本。但是,如果我用这个替换它

String text = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[text()='SER20170905104010']"))).getText();

它返回我需要的预期值,即“SER20170905111755”。以下是两个文本页面的HTML代码

  1. SER20170905111755 - AF-CR-613 enter image description here

  2. SER20170905111755 enter image description here

  3. 请告诉我如何使用// *代替// div?

    执行精确的文本搜索

2 个答案:

答案 0 :(得分:1)

试试这个xapths

//div[@class='tabHeader']

//div[@class='tabHeader'][contains(text(),'SER20170905111755')]

答案 1 :(得分:0)

你可以尝试在你的xpath中使用not predicate,如下所示

By.xpath("//*[contains(., 'SER20170905104010') and not(contains(.,'SER20170905111755 - AF-CR-613'))]")

我也不确定这一点,但只是试一下,让我知道。