使用selenium webdriver捕获跨度内的文本

时间:2016-08-18 11:51:31

标签: selenium selenium-webdriver

我正在使用selenium webdriver和它的新功能。我需要帮助。 我的Xpath看起来像这样:

html/body/div[1]/section/div/div/div/div/div[1]/div[1]/div[2]/ul/li[1]/div/span

代码:

 <div class="mod-content">
   <ul id="issuedetails" class="property-list two-cols">
      <li class="item">
         <div class="wrap">
            <strong class="name">Type:</strong>
               <span id="type-val" class="value">
                  <img width="16" height="16" title="Provision access - HUE"         src="/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype" alt=""/>
                   Provision access - HUE           
               </span>
          </div>

我想捕获文本“Provision access - HUE”。但是当我使用Selenium webdriver 2

WebElement Type = driver.findElement(By.xpath("//*/span[@id='type-val]"));   
System.out.println("Type is "+Type.getText());//Printing Type

我输出为“Type is Access Request”。

1 个答案:

答案 0 :(得分:1)

我认为有多个span元素具有类名value,而您正在查找其他span,因为findElement始终返回第一个匹配的定位器元素,您需要要创建可以找到您的愿望元素的唯一定位器,可能id在此处是唯一的,因此您应该尝试使用By.id(),如下所示: -

WebElement Type = driver.findElement(By.id("type-val"));   
System.out.println("Type is "+Type.getText());

如果此处id也不唯一,请尝试使用xpath: -

WebElement Type = driver.findElement(By.xpath(".//strong[contains(text(), 'Type:')]/following-sibling::span[@id = 'type-val']"));   
System.out.println("Type is "+Type.getText());