Java 从Selenium中的内部标记中提取文本
以下是HTML代码片段: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(); 试
文本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