Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Selenium中的内部标记中提取文本_Java_Html_Selenium - Fatal编程技术网

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

Java 从Selenium中的内部标记中提取文本,java,html,selenium,Java,Html,Selenium,以下是HTML代码片段: 文本1 文本2 如何使用selenium脚本提取Text2?我知道如何通过获取“abc”类的innerHTML,然后删除“bcd”类的innerHTML,来提取Text2。但我只是在寻找更好的方法来解决这个问题。试试这个: WebElement element = driver.findElement(By.xpath("//label[contains(text(),'Text2')]")); String test = element.getText(); 试

以下是HTML代码片段:


文本1
文本2
如何使用selenium脚本提取
Text2
?我知道如何通过获取“abc”类的
innerHTML
,然后删除“bcd”类的
innerHTML
,来提取
Text2
。但我只是在寻找更好的方法来解决这个问题。

试试这个:

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

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

对于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

我不想得到元素。我想得到字符串Text2。如果我对从上述代码中找到的元素执行getText(),我将得到Text1 Text2这将返回Text1 Text2而不仅仅是Text2这将返回Text1 Text2而不仅仅是Text2您想用哪种编程语言编写?还是希望使用纯xpath?编程语言:java。仅仅xpath就足够了。作为label类的子类是span类,这难道不返回Text1吗?我想提取父元素的文本,但不包括子元素的文本。我在回答中给出的xpath返回Text2。
    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