2015-01-30 10 views
6

Sto tentando di verificare il testo "Le informazioni fornite non sono valide o sono incomplete." viene visualizzato utilizzando Selenium/WebDriver in Java.Selenium WebDriver recupera il testo dalla proprietà CSS "content" su un :: before pseudo element

ho il seguente codice HTML:

<div id="validationError"> 
    <ul> 
     <li>Required: Server Name</li> 
     <li>Required: Receiving Port</li> 
    </ul> 
</div> 

con il seguente codice CSS:

#validationError:before { 
    content: 'The information provided is either invalid or incomplete.'; 
} 

Ecco il mio codice Java corrente:

WebElement errorBox = browser.findElement(By.id("validationError")); 
Assert.assertNotNull("Could not find validation errors", errorBox); 

System.out.println("Error Explanation: " + error.getCssValue("content") + "\n"); 

List<WebElement> errorList = errorBox.findElements(By.tagName("li")); 
for (WebElement error : errorList) { 
    System.out.println("Error: " + error.getText()); 
} 

System.out.println("\nError Full Text: " + errorBox.getText()); 

Questa è la mia uscita di quanto sopra codice:

Error Explanation: 

Error: Required: Server Name 
Error: Required: Receiving Port 

Error Full Text: Required: Server Name 
Required: Receiving Port 

Non riesco a trovare un modo per verificare il testo "Le informazioni fornite sono non valide o incomplete." È visualizzato. Chiamando getText() sull'elemento web, inoltre, non viene restituita la stringa prevista, ma verrà visualizzato qualsiasi altro testo normale all'interno di quel div. Qualche idea?

+0

è possibile fornire l'html'? – Saifur

+0

Siamo spiacenti, ho riscontrato problemi con la formattazione del codice, non mi sono reso conto che è necessario un ritorno a capo prima di ogni snippet di codice. Ha senso ora? – dfreer

+0

Lo fa. Tuttavia, sai che 'webdriver' trova l'elemento prima o no? oltre a fornire lo stacktrace con la domanda per riferimento futuro per favore – Saifur

risposta

17

Non sono sicuro al 100% se WebDriver è in grado di recuperare il contenuto di pseudo elementi. Penso che avresti bisogno di usare Javascript. Sotto funziona, ho provato.

String script = "return window.getComputedStyle(document.querySelector('#validationError'),':before').getPropertyValue('content')"; 
JavascriptExecutor js = (JavascriptExecutor)driver; 
String content = (String) js.executeScript(script); 
System.out.println(content); 

Questo dovrebbe stampare

The information provided is either invalid or incomplete. 
-1

Beh .. Tutto quello che un WebDriver bisogno è solo un XPath valida per trovare il web-elemento sul DOM. E ci sono molti modi per correggere un Xpath valido.

Possiamo anche usare i token come

  • discendente ::
  • bambino ::
  • antenato ::
  • contiene ::

    Esempio: // div [*/text() = 'Carta di credito']/discendente :: input [@ id = 'cardNumber']

È possibile consultare questo site per ulteriori informazioni su come utilizzare questi in xpath ..

+0

sarebbe il downvoter spiegare agli utenti perché la risposta vale un "DownVote" ..? – Praveen

+1

Non sono il downvoter, ma gli pseudo-elementi non compaiono sul DOM, quindi purtroppo la tua risposta non funzionerà. – Arman

Problemi correlati