如何在Selenium中的多个跨度时读取Span标记中的文本

时间:2017-12-02 00:35:36

标签: java selenium-webdriver

<td class="rich-tabpanel-content" style="; ">
   <div id="page:form1:block1:j_id738" style="width:75%;">
      <span xmlns="http://www.w3.org/1999/xhtml" id="page:form1:block1:out">
         <b>
         <span style="text-align:right;font-size:15px;color:black">Risk Value</span>
         </b>  
         <b>
         <span style="text-align:right;font-size:15px;color:black"></span>
         <span style="text-align:right;font-size:14px;color:blue">Select a value for every risk.</span>
         </b>
      </span> 
   </div>
</td>     

我正在使用

String str = driver.findElement(By.cssSelector("div[id^='page:form1:block1:j_id738'] span ")).getText();

但它只获取风险值而不是其他文本

2 个答案:

答案 0 :(得分:1)

您正在寻找driver.findElements而不是driver.findElement

尝试这样的事情:

List<WebElement> elements = driver.findElements(By.cssSelector("div[id^='page:form1:block1:j_id738'] span"));

然后遍历此列表并在每个元素上调用getText()以检索文本,即:

如果您使用的是Java:

for (WebElement element : elements) {
     String data = element.getText();
     // do something with data
}

如果你正在使用C#:

foreach (WebElement element in elements) {
     string data = element.getText();
     // do something with data
}

答案 1 :(得分:0)

您所需的部分中有多个span标记。因此,您必须使用 findElements 方法,而不是使用 findElement findElements 返回驻留在指定css或className中的元素列表。所以你的代码看起来应该像 -

List<WebElement> elements = driver.findElements(By.cssSelector("div[id^='page:form1:block1:j_id738'] span"));
for (WebElement element : elements) {
  System.out.println(element.getText());  
}