如何使用Selenium获取WebElement
的内部HTML?
这是我到目前为止所尝试的:
WebElement divData=driver.findElement(By.id("data"));
divData.getText(); //returns empty
OR
divData.getAttribute("innerHTML"); //returns empty
OR
String script="return arguments[0].innerHTML";
String result=(String) ((JavascriptExecutor)driver).executeScript(script,divData);
System.out.println(""+result); //empty
答案 0 :(得分:0)
{报价}
在树视图中表示以上内容:
所以基本的webdriver方法WebElement.getText()
应该适用于包含文本的任何正确定位的元素。
因此有2种可能找到webelement的文本:
I)尝试从与上述div相关的所有分段(孩子)中获取文本:
List<WebElement> childsOfDiv =driver.findElements(By.cssSelector(#data>*));
for(WebElement iter: childsOfDiv){
System.out.println(iter.getText());
}
II)
通过涉及javascriptexecutor
的js方法获取元素的文本
最初的步骤是找到与div相关的子元素的定位器:
String child1CSS="#data>b";
String child2CSS="#data>br";
public String getTextInvolvingJs(String cssLocator)
{
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\""+cssLocator+"\");");
stringBuilder.append("return x.text().toString();") ;
String res= (String) js.executeScript(stringBuilder.toString());
return res;
}
String foundText1= getTextInvolvingJs(child1CSS);
String foundText2= getTextInvolvingJs(child2CSS);
希望这适合你。