2015-09-14 21 views
6

Tôi đang thử nghiệm một ứng dụng js gócTesting Angularjs ứng dụng với Selenium

Liên kết Angular js App

khi tôi nhấp vào liên kết UI Kit trên ứng dụng web tôi đang nhận được lỗi sau -

tại demoaj.Ajapp.main (Ajapp.java:16) Gây ra bởi: org.openqa.selenium.NoSuchElementException: Không thể định vị phần tử: {"phương thức": "xpath", "bộ chọn": "html/body/div 1/div 1/Aside/div/div/ul/li [2]/A "} thời gian lệnh hoặc thời gian chờ: 51 mili giây Đối với tài liệu về lỗi này , vui lòng truy cập: http://seleniumhq.org/exceptions/no_such_element.html

Tôi mới đến đây tôi đã làm một số nghiên cứu về vấn đề này angularJS

java Mã

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

     } 

} 

tôi nghĩ rằng nó không phải là có thể tìm thấy nguyên tố này bởi vì trong angularjs dom không render. khi tôi kiểm tra nguồn trang nó không hiển thị bất cứ điều gì tất cả mọi thứ được ẩn sau khi làm một số nghiên cứu về thử nghiệm angularjs tôi có vài câu hỏi xin vui lòng giúp đỡ,

cho thử nghiệm ứng dụng góc.

  1. tôi nghĩ tôi phải sử dụng thước đo góc? tôi đoán
  2. nếu tôi sử dụng thước đo góc, tôi phải viết mã bằng javascript hoặc jquery?
  3. nếu tôi sử dụng thước đo góc, tôi có thể viết mã của mình bằng java bằng cách sử dụng id eclipse hoặc intellij không?

Xin vui lòng giúp,

Cảm ơn trước.

Trả lời

3

Dưới đây là câu trả lời của bạn -

  • Có để thử nghiệm AngularJS bạn cần phải sử dụng thước đo vì nó có hỗ trợ sẵn có để chờ kiễu góc để tải.
  • Nếu bạn sử dụng Thước đo góc, thì bạn cần phải viết mã bằng JavaScript và không phải jquery.
  • Nếu bạn sử dụng Thước đo góc, bạn không thể sử dụng Java làm Thước đo góc được xây dựng trên đầu trang của Selenium WebDriverJS.

Lợi thế là bạn có thể viết mã Javascript (đơn giản hơn Java) để kiểm tra ứng dụng góc cạnh của bạn và bạn không phải lo lắng về cách AngularJS hoạt động trên trang của bạn. Chỉ có điều có thể gây nhầm lẫn cho bạn là sử dụng promises được lấy từ WebdriverJS. Hi vọng điêu nay co ich.

0

Tôi nghĩ góc đã trả lại phần tử và selen của bạn là tìm nó, nhưng nó không phải là nhấp được nêu ra. Bạn có thể tìm thấy nó bằng cách nhận một số thuộc tính cho phần tử (ví dụ: văn bản). Vấn đề là với góc không hoàn thành với các cuộc gọi http $ (và có lẽ là chu kỳ tiêu hóa $). Người ta nghĩ rằng bạn có thể làm là chờ cho đến khi góc được thực hiện với các yêu cầu $ http đang chờ xử lý và sau đó tìm phần tử mong muốn của bạn và gọi .Click() trên đó. Dưới đây là một đoạn mã làm việc tôi sử dụng cho dự án thử nghiệm của chúng tôi trong 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"; 
       }; 
Các vấn đề liên quan