Selenium WebDriver 如何验证来自 Span 标签的文本
Selenium WebDriver how to verify Text from Span Tag
我正在尝试使用 WebDriver 验证跨度中的文本。有跨度标签:
<span class="value">
/Company Home/IRP/tranzycja
</span>
我试过这样的事情:
driver.findElement(By.xpath("//span[@id='/Company Home/IRP/tranzycja']'"));
driver.findElement(By.cssSelector("span./Company Home/IRP/tranzycja"));
但 none 这项工作。
任何帮助将不胜感激。谢谢
更多代码:
<span id="uniqName_64_0" class="alfresco-renderers-PropertyLink alfresco-renderers-Property pointer small" data-dojo-attach-point="renderedValueNode" widgetid="uniqName_64_0">
<span class="inner" tabindex="0" data-dojo-attach-event="ondijitclick:onLinkClick">
<span class="label">
In folder:
</span>
<span class="value">
/Company Home/IRP/tranzycja
</span>
</span>
uniqName 不应该是一个目标,因为它们很多而且它们在变化。
有一个完整的 html 代码:
http://www.filedropper.com/spantag
我想你会想要使用像
这样的东西
driver.findElement(By.xpath("//span[@id='/Company Home/IRP/tranzycja'])).getText();
getText();将获取该范围内的文本
找到 <span>
元素的一个可能的 xpath :
//span[normalize-space(.) = '/Company Home/IRP/tranzycja']
这里我假设您正在尝试验证 span 标签中的文本。
即'/公司Home/IRP/tranzycja'
试试下面的代码
String expected String = "/Company Home/IRP/tranzycja";
String actual_String = driver.findElement(By.xpath("//span[@class='alfresco-renderers-PropertyLink alfresco-renderers-Property pointer small']//span[@class='value']")).getText();
if(expected String.equals(actual_String))
{
System.out.println("Text is Matched");
}
else
{
System.out.println("Text is not Matched");
}
您可以尝试使用 xpath('some text' 可以像@Rupesh 建议的那样用变量替换):
driver.findElement(By.xpath("//span/span[@class='value'][normalize-space(.) = 'some text']"))
或
driver.findElement(By.xpath("//span/span[@class='value'][contains(text(),'some text')]"))
(请注意,此 xpath 将找到第一个匹配元素,因此如果存在包含文本 'some text 1' 和 'some text 2' 的 span 元素,只会找到第一个匹配项。)
当然,如果在页面上找不到元素(带有定义的文本),这两个方法将抛出 NoSuchElementException。如果您正在使用 Java 并且如果需要,您可以轻松捕获该错误并打印正确的消息。
您可以在 Xpath 中使用 text() 方法。我希望这能解决您的问题
String str1 = driver.findElement(By.xpath("//span[text()='/Company Home/IRP/tranzycja']")).getText();
System.out.println("str1");
输出=/公司Home/IRP/tranzycja
我正在尝试使用 WebDriver 验证跨度中的文本。有跨度标签:
<span class="value">
/Company Home/IRP/tranzycja
</span>
我试过这样的事情:
driver.findElement(By.xpath("//span[@id='/Company Home/IRP/tranzycja']'"));
driver.findElement(By.cssSelector("span./Company Home/IRP/tranzycja"));
但 none 这项工作。
任何帮助将不胜感激。谢谢
更多代码:
<span id="uniqName_64_0" class="alfresco-renderers-PropertyLink alfresco-renderers-Property pointer small" data-dojo-attach-point="renderedValueNode" widgetid="uniqName_64_0">
<span class="inner" tabindex="0" data-dojo-attach-event="ondijitclick:onLinkClick">
<span class="label">
In folder:
</span>
<span class="value">
/Company Home/IRP/tranzycja
</span>
</span>
uniqName 不应该是一个目标,因为它们很多而且它们在变化。
有一个完整的 html 代码: http://www.filedropper.com/spantag
我想你会想要使用像
这样的东西driver.findElement(By.xpath("//span[@id='/Company Home/IRP/tranzycja'])).getText();
getText();将获取该范围内的文本
找到 <span>
元素的一个可能的 xpath :
//span[normalize-space(.) = '/Company Home/IRP/tranzycja']
这里我假设您正在尝试验证 span 标签中的文本。
即'/公司Home/IRP/tranzycja'
试试下面的代码
String expected String = "/Company Home/IRP/tranzycja";
String actual_String = driver.findElement(By.xpath("//span[@class='alfresco-renderers-PropertyLink alfresco-renderers-Property pointer small']//span[@class='value']")).getText();
if(expected String.equals(actual_String))
{
System.out.println("Text is Matched");
}
else
{
System.out.println("Text is not Matched");
}
您可以尝试使用 xpath('some text' 可以像@Rupesh 建议的那样用变量替换):
driver.findElement(By.xpath("//span/span[@class='value'][normalize-space(.) = 'some text']"))
或
driver.findElement(By.xpath("//span/span[@class='value'][contains(text(),'some text')]"))
(请注意,此 xpath 将找到第一个匹配元素,因此如果存在包含文本 'some text 1' 和 'some text 2' 的 span 元素,只会找到第一个匹配项。)
当然,如果在页面上找不到元素(带有定义的文本),这两个方法将抛出 NoSuchElementException。如果您正在使用 Java 并且如果需要,您可以轻松捕获该错误并打印正确的消息。
您可以在 Xpath 中使用 text() 方法。我希望这能解决您的问题
String str1 = driver.findElement(By.xpath("//span[text()='/Company Home/IRP/tranzycja']")).getText();
System.out.println("str1");
输出=/公司Home/IRP/tranzycja