2015-09-14 11 views
6

jestem testowania kątową js aplikacjęTestowanie angularjs Zastosowanie selenem

link Angular js App

po kliknięciu na link Kit UI na aplikację internetową otrzymuję następujący błąd -

at demoaj.Ajapp.main (Ajapp.java:16) Spowodowane przez: org.openqa.selenium.NoSuchElementException: Nie można zlokalizować elementu: {"method": "xpath", "selector": "html/body/div 1/div 1/Bok/div/div/ul/li [2]/a "} Czas trwania poleceń lub timeout: 51 milisekund dla dokumentacji na tej błędu, prosimy odwiedzić: http://seleniumhq.org/exceptions/no_such_element.html

Jestem nowy na tym zrobiłem niektóre badania na ten angularjs

Java Code

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(); 

     } 

} 

myślę, że nie jest w stanie znaleźć element, ponieważ w angularjs DOM nie jest trójwymiarowa. kiedy sprawdzam źródło strony, nic nie wyświetla, wszystkie rzeczy są ukryte po wykonaniu niektórych badań dotyczących testów angularjs. Mam kilka pytań, proszę pomóc,

do testowania aplikacji Angular.

  1. Myślę, że muszę używać kątomierza? Chyba
  2. jeśli używam kątomierza muszę napisać kod w javascript lub jquery?
  3. jeśli używam kątomierza mogę napisać mój kod w java za pomocą eclipse ide lub intellij?

proszę o pomoc,

góry dzięki.

Odpowiedz

3

Oto wasze odpowiedzi -

  • Tak dla testów angularjs trzeba użyć kątomierz, ponieważ ma wbudowaną obsługę czekać na załadowanie kątowe.
  • Jeśli używasz kątomierza, to musisz napisać kod w JavaScript, a nie jquery.
  • Jeśli używasz kątomierza, nie możesz używać Javy, ponieważ Kątomierz jest zbudowany na bazie Selenium WebDriverJS.

Korzyścią jest to, że można napisać kod JavaScript (który jest prostszy niż Java), aby przetestować swoją aplikację kątową i nie musisz się martwić o to, jak AngularJS działa na Twojej stronie. Jedyne, co może cię zmylić, to użycie promises, które pochodzi z WebdriverJS. Mam nadzieję że to pomoże.

0

Myślę, że kanciasta wytworzyła Twój pierwiastek, a selen go znajduje, ale nie można go jeszcze kliknąć. Możesz go znaleźć, pobierając pewne właściwości dla elementu (np. Tekst). Problem polega na tym, że kąt nie jest zakończony wywołaniami $ http (i prawdopodobnie cyklem $ digest). Uważa się, że możesz poczekać, aż zrobi się kątowy z oczekującymi żądaniami $ http, a następnie znaleźć żądany element i wywołać na nim metodę .Click(). Poniżej znajduje się działający fragment kodu, którego używam do naszego projektu testowego w języku 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"; 
       }; 
Powiązane problemy