2015-09-14 15 views
6

sto testando un'applicazione js angolareTesting Angularjs Applicazione con selenio

link Angular js App

quando clicco sul link UI Kit sull'applicazione web sto ottenendo il seguente errore -

a demoaj.Ajapp.main (Ajapp.java:16) causato da: org.openqa.selenium.NoSuchElementException: impossibile trovare l'elemento: {"metodo": "xpath", "selettore": "html/body/div 1/div 1/Parte/div/div/ul/li [2]/a "} durata Comando o timeout: 51 millisecondi per la documentazione su questo errore , si prega di visitare: http://seleniumhq.org/exceptions/no_such_element.html

Sono nuovo di questo ho fatto qualche ricerca su questo angularJS

codice Java

package demoaj; 

    import org.openqa.selenium.By; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.firefox.FirefoxDriver; 
    import org.openqa.selenium.support.ui.ExpectedConditions; 
    import org.openqa.selenium.support.ui.WebDriverWait; 

    public class Ajapp { 

     public static void main(String[] args) throws InterruptedException { 
     WebDriver d=new FirefoxDriver(); 
     d.manage().window().maximize(); 
     d.get("http://iarouse.com/demo/index.html?product=square"); 
     WebDriverWait wait = new WebDriverWait(d, 20); 
     wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("html/body/div[1]/div[1]/aside/div/div/ul/li[2]/a"))).click(); 
     //d.findElement(By.xpath("html/body/div[1]/div[1]/aside/div/div/ul/li[2]/a")).click(); 

     } 

} 

penso che non è in grado di trovare l'elemento perché in angularjs il DOM non è il rendering. quando controllo l'origine della pagina non mostra nulla tutte le cose sono nascoste dopo aver fatto qualche ricerca sui test di angularjs ho qualche domanda, per favore aiuto,

per il test delle applicazioni angolari.

  1. penso di dover usare il goniometro? immagino
  2. se uso il goniometro devo scrivere il codice in javascript o jquery?
  3. se uso il goniometro posso scrivere il mio codice in java usando eclipse ide o intellij?

Please Help,

Grazie in anticipo.

risposta

3

Ecco le vostre risposte -

  • Sì per il test AngularJS è necessario utilizzare goniometro in quanto ha il supporto integrato per aspettare angolare da caricare.
  • Se si utilizza Goniometro, è necessario scrivere codice in JavaScript e non in jQuery.
  • Se si utilizza il goniometro, non è possibile utilizzare Java poiché il goniometro si basa su Selenium WebDriverJS.

Il vantaggio sarebbe che è possibile scrivere codice Javascript (che è più semplice di Java) per testare la propria app angolare e non ci si deve preoccupare di come AngularJS funzioni sulla pagina. L'unica cosa che potrebbe confonderti è l'utilizzo di promises che è preso da WebdriverJS. Spero che questo ti aiuti.

0

Penso angolare ha reso il vostro elemento e selenio è trovarlo, ma non è ancora cliccabile. Puoi scoprirlo ottenendo alcune proprietà per l'elemento (cioè il testo). Il problema è con angolare non finito con chiamate $ http (e probabilmente il ciclo $ digest). Una cosa che si può fare è aspettare fino a quando l'angolare non è terminato con richieste $ http in sospeso e poi trovare l'elemento desiderato e chiamare .Click() su di esso. Di seguito è riportato uno snippet di codice funzionante che utilizzo per il nostro progetto di test in C#.

new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(angularIsDoneLoading); 
//Add the rest of your code in here(like finding element, clicking on it etc.) 


     Func<IWebDriver, bool> angularIsDoneLoading = (IWebDriver drv) => 
       { 
        string ngFinishedAllRequests = 
         @"var injector = window.angular.element('body').injector(); 
         var $http = injector.get('$http'); 
         return ($http.pendingRequests.length === 0)"; 

        return ((IJavaScriptExecutor)drv).ExecuteScript(ngFinishedAllRequests).ToString() == "True"; 
       }; 
Problemi correlati