从Selenium中的内部标记中提取文本

时间:2015-10-27 05:31:48

标签: java html selenium

以下是HTML代码段:

<label class="abc">
  <span class="bcd">Text1</span>
  Text2
</label>

如何使用selenium脚本提取Text2?我知道如何通过获取Text2&#34; abc&#34;来提取innerHTML然后删除&#34; bcd&#34;的innerHTML类。但我只是在寻找一种更好的方法来解决这个问题。

3 个答案:

答案 0 :(得分:0)

试试这个:

WebElement element = driver.findElement(By.xpath("//label[contains(text(),'Text2')]"));
String test = element.getText();

答案 1 :(得分:0)

的xpath:

//label[@class='abc']/child::text()

for Python:

returnText = driver.execute_script("return document.evaluate(\"//label[@class='abc']/child::text()\", document, null, XPathResult.STRING_TYPE, null).stringValue;")

有时,可以有空格,并且它按程序计算为字符串,因此您应该使用数组:

    returnText = []
    returnText = self.driver.execute_script("var iterator = document.evaluate(\"//label[@class='abc']/child::text()\", document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); var arrayXpath = new Array();  var thisNode = iterator.iterateNext(); while (thisNode) {arrayXpath.push(thisNode.textContent);  thisNode = iterator.iterateNext(); }    return arrayXpath;")

    for item in returnText:
        print item

答案 2 :(得分:-1)

试试这个:

String text2=driver.findElement(By.xpath("//label[@class='abc']").Text;