Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在selenium中找不到确切的文本_Java_Selenium_Xpath - Fatal编程技术网

Java 在selenium中找不到确切的文本

Java 在selenium中找不到确切的文本,java,selenium,xpath,Java,Selenium,Xpath,我这里有一个问题,我需要使用selenium搜索精确的文本。我想搜索值为SER20170905111755的确切文本,但实际上,页面上还有另一个值为SER20170905111755-AF-CR-613的类似文本 我试过用这个 String text = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(., 'SER20170905104010')]"))).getText(); 它

我这里有一个问题,我需要使用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();
它抛出超时异常。似乎它找不到文本。但是如果我换成这个

String text = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[text()='SER20170905104010']"))).getText();
它返回我需要的预期值,即SER20170905111755。下面是两个文本页面的HTML代码

SER20170905111755-AF-CR-613

SER20170905111755


您可以帮助我如何使用//*而不是//div来执行精确的文本搜索吗?

您可以尝试在xpath中使用not谓词,如下所示

By.xpath("//*[contains(., 'SER20170905104010') and not(contains(.,'SER20170905111755 - AF-CR-613'))]")
我对此也不确定,但请尝试一下并让我知道。

试试这个xapths

//div[@class='tabHeader']


在xpathWhy中使用类名你为什么要//*而不是//divHi Tarun,对于这个页面,它出现在一个div中,但它可能在其他地方,而不是在其他页面的div中。你找到解决方案了吗?嗨,只有一个问题。为什么//div按预期工作而不是//*?我不知道,但*在完整页面中查找元素,而//tagname在同一类型标记中搜索。我希望它能帮助你。我们也可以用*搜索,为什么它对你不起作用对我来说很奇怪,我也尝试过firebug中的//*并找到了文本。由于需要,我在IE上运行测试。使用//*时,它在IE上不起作用。我刚刚使用FireBug使用/*进行了尝试,它与我想要的文本匹配。请告诉我我将尝试的IE版本,如果我将SER20170905104010替换为variable,该怎么办?有没有像SER20170905104010那样的?
//div[@class='tabHeader'][contains(text(),'SER20170905111755')]