如何让xpath在其他标签的同一级别上获取没有标签的文本

时间:2017-02-16 06:04:25

标签: selenium xpath

我正在尝试获取Search Results:的XPath。但是,当我给它 //span[@class='zeiss-font-Md aletssubtitle'] 它没有检测到文本,它正在检测范围

<div class="col-xs-12">
   <div class="col-xs-5" style="padding:0">
     <div>
       <span class="zeiss-font-Md aletssubtitle" style="line-height:3.2">
          Search Results :
          <label class="ACadmincount"> 1 Matching Results</label>
       </span>
    </div>
   </div>
</div>

4 个答案:

答案 0 :(得分:0)

要获取文本值,请使用text()函数

这是代码

//span[@class='zeiss-font-Md aletssubtitle']/text()

答案 1 :(得分:0)

您不能将XPathselenium一起使用来获取@Sunil Garg建议的文本节点(//span[@class='zeiss-font-Md aletssubtitle']/text())。它的语法正确XPath表达式,但selenium不支持此语法:

  

selenium.common.exceptions.InvalidSelectorException:消息:无效的选择器:xpath表达式“// text()”的结果是:[object Text]。它应该是一个    元件。

您希望获得特定元素的完整或部分文本内容,您可以使用类似

的内容

的Python

span = driver.find_element_by_xpath("//span[@class='zeiss-font-Md aletssubtitle']")
span.text # returns 'Search Results : 1 Matching Results'
driver.execute_script('return arguments[0].childNodes[0].nodeValue.trim()', span) # returns 'Search Results :'

爪哇

WebDriverWait wait = new WebDriverWait(webDriver, 10);
WebElement span = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//span[@class='zeiss-font-Md aletssubtitle']")));
String text = span.getText();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("return arguments[0].childNodes[0].nodeValue.trim()", span);

答案 2 :(得分:0)

您可以尝试使用CSS Selector,如下所示:

driver.findElement(By.cssSelector("span.zeiss-font-Md.aletssubtitle)).getAttribute("innerText");

OR

    driver.findElement(By.cssSelector("span.zeiss-font-Md.aletssubtitle)).getText();

也应该有效。

答案 3 :(得分:0)

这很简单,您可以尝试:// * [text()='搜索结果:']

希望这会对你有所帮助,

谢谢, Ed D,印度。