【问题标题】:Get text of WebElement which contains html tags获取包含 html 标签的 WebElement 文本
【发布时间】:2015-04-16 07:42:51
【问题描述】:

如何使用 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

【问题讨论】:

  • 你好
    “这里是学校”
  • 你有什么问题?
  • 获取 div 的内容
  • @GrishmaOswal 你确定#data 存在吗? #data 有没有 HTML?你能显示你运行这个的标记吗?
  • 你在使用网络驱动吗?

标签: java javascript html selenium


【解决方案1】:

正如我从评论中看到的 {报价}

你好
“这里是学校”

{quote}

在树视图中表示上述内容:

所以基本的 webdriver 方法 WebElement.getText() 应该适用于任何正确定位的包含文本的元素。

所以有两种可能找到 webelement 的文本:

  • 我)尝试从与上述 div 相关的所有子元素(子元素)中获取文本:

    List<WebElement> childsOfDiv =driver.findElements(By.cssSelector(#data>*));
    
    for(WebElement iter: childsOfDiv){
        System.out.println(iter.getText());
    }
    
  • 二) 通过涉及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);
    

希望这对你有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多