2012-11-03 36 views
18

Có thể lấy trình ghi nhật ký bằng cách nào đó mà Selenium WebDriver sử dụng không? Tôi muốn nắm bắt một bảng điểm của tất cả các lệnh đã được phát hành (ví dụ: mở, chờ, nhấp, v.v.). Đặc biệt tôi đang tìm kiếm một giải pháp java, khi tôi xuất các bài kiểm tra vào junit.Cách lấy nhật ký gốc tại Selenium WebDriver

tôi tìm thấy mã này vào trang web của họ, tuy nhiên nó sẽ hiển thị gì trên tiêu chuẩn ra

DesiredCapabilities caps = DesiredCapabilities.firefox(); 
    LoggingPreferences logs = new LoggingPreferences(); 
    logs.enable(LogType.DRIVER, Level.FINEST); 
    caps.setCapability(CapabilityType.LOGGING_PREFS, logs); 
    driver = new FirefoxDriver(caps); 

Trả lời

33

Enable logging trong trình điều khiển bạn đang sử dụng, chọn log loại bạn đang quan tâm và mức độ log (Tôi đang sử dụng FirefoxDriver, tạo điều kiện cho tất cả các loại bản ghi và thu thập tất cả các thông điệp log)

LoggingPreferences logs = new LoggingPreferences(); 
logs.enable(LogType.BROWSER, Level.ALL); 
logs.enable(LogType.CLIENT, Level.ALL); 
logs.enable(LogType.DRIVER, Level.ALL); 
logs.enable(LogType.PERFORMANCE, Level.ALL); 
logs.enable(LogType.PROFILER, Level.ALL); 
logs.enable(LogType.SERVER, Level.ALL); 

DesiredCapabilities desiredCapabilities = DesiredCapabilities.firefox(); 
desiredCapabilities.setCapability(CapabilityType.LOGGING_PREFS, logs); 

WebDriver driver = new FirefoxDriver(desiredCapabilities); 

sau đó, sau khi chạy thử nghiệm, bạn có thể thu thập các bản ghi (tôi chỉ thu thập các bản ghi DRIVER, nhưng bạn có thể làm tương tự cho bất kỳ loại hình log)

Logs logs = driver.manage().logs(); 
LogEntries logEntries = logs.get(LogType.DRIVER); 

for (LogEntry logEntry : logEntries) { 
    System.out.println(logEntry.getMessage()); 
} 
+0

Làm cách nào để tôi ghi lại nhật ký bằng log4j hoặc bất kỳ trình ghi nào khác? –

+0

@MichelFeldheim Thay vì in "logEntry.getMessage()" vào giao diện điều khiển trong ví dụ trên, bạn nên in giá trị đó bằng cách sử dụng logger log4j. –

+0

giải pháp tốt cho FF nhưng bạn có một giải pháp cho IE11? – sgrillon

1

Tôi đang sử dụng log4j cho khai thác gỗ như utils logger là dễ nhất và thẳng nhất một mong rằng, có thể được sử dụng (IMHO).

POM phụ thuộc:

<dependency> 
      <groupId> org.apache.cassandra</groupId> 
      <artifactId>cassandra-all</artifactId> 
      <version>0.8.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>1.6.6</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jul-to-slf4j</artifactId> 
      <version>1.6.6</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>log4j-over-slf4j</artifactId> 
      <version>1.6.6</version> 
      <scope>runtime</scope> 
     </dependency> 

nhập khẩu đang theo dõi:

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

sử dụng:

private static Logger log = LoggerFactory.getLogger(classname.class); 

và sau đó chỉ cần sử dụng nó như vậy:

logger.info ("butonCLick"); 
driver.findElement(By.id("blablabla")).click(); 

Hy vọng điều này phù hợp với bạn.

+1

bạn đang đăng nhập thủ công với 'logger .info ("butonCLick"); '. Tôi đang làm điều đó bây giờ, nhưng nó là một nỗi đau và cũng không đáng tin cậy. Tôi muốn có được một selenium logger bản địa và làm điều này. – Zombies

3

Hãy thử

driver.manage().logs() 

Bạn sẽ nhận được giao diện Logs có phương pháp để có được các bản ghi và đăng nhập các loại. Xem Logs interface docs

Các vấn đề liên quan