2015-04-16 3 views
0

Как я могу получить Внутренний HTML-код WebElement с 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

hello
"This is school"

+0

Что вы хотите сказать? – Shaggy

+0

выборка содержимого div –

ответ

0

как я вижу из комментария {цитаты}

привет
"Это школа"

{цитата}

Представляя вышесказанное в древе: tree view of HTML

Таким образом, базовый метод webdriver WebElement.getText() должен работать для любого правильно расположенного элемента, который содержит текст.

Так там 2 possbilities найти текст webelement:

  • I) пытаются получить текст из всех субэлементов (Чайлдс), связанные с DIV выше:

    List<WebElement> childsOfDiv =driver.findElements(By.cssSelector(#data>*)); 
    
    for(WebElement iter: childsOfDiv){ 
        System.out.println(iter.getText()); 
    } 
    
  • II) получить текст элементов методом js с использованием javascriptexecutor Начальный шаг - найти локаторы дочерних элементов, связанных с 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); 
    

Надеюсь, это сработает для вас.

Смежные вопросы