2012-11-03 21 views
18

क्या सेलेनियम वेबड्राइवर का उपयोग किसी भी तरह से लॉगर प्राप्त करना संभव है? मैं जारी किए गए सभी आदेशों की प्रतिलिपि को कैप्चर करना चाहता हूं (उदाहरण: खुला, प्रतीक्षा करें, क्लिक करें, आदि)। विशेष रूप से मैं जावा समाधान की तलाश में हूं, क्योंकि मैं जूनिट में परीक्षण निर्यात कर रहा हूं।सेलेनियम वेबड्राइवर में मूल लॉगर कैसे प्राप्त करें

मैं अपनी वेबसाइट पर इस कोड को नहीं मिला, हालांकि इस पर मानक बाहर

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

उत्तर

33

ड्राइवर आप उपयोग कर रहे में लॉगिंग सक्षम है, जो आप में रुचि रखते हैं प्रकार और लॉग स्तर (मैं FirefoxDriver उपयोग कर रहा हूँ, लॉग के सभी प्रकार के सभी लॉग संदेशों को सक्षम करने और इकट्ठा)

लॉग इन करें चयन
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); 

उसके बाद, परीक्षण आप लॉग एकत्र कर सकते हैं (मैं केवल ड्राइवर लॉग एकत्रित कर रहा हूँ, लेकिन आप लॉग के किसी भी प्रकार के लिए भी ऐसा ही कर सकते हैं)

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

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

के बारे में पूछ रहा है मैं लॉग 4j या किसी अन्य लॉगर के साथ उस लॉग को कैप्चर कैसे करूं? –

+0

@MichelFeldheim ऊपर दिए गए उदाहरण में कंसोल पर "logEntry.getMessage()" को मुद्रित करने के बजाय, आपको log4j लॉगर का उपयोग करके उस मान को मुद्रित करना चाहिए। –

+0

एफएफ के लिए अच्छा समाधान है लेकिन आप IE11 के लिए एक समाधान है? – sgrillon

1

मैं लकड़हारा utils के रूप में प्रवेश के लिए log4j उपयोग कर रहा हूँ सबसे आसान और सीधे आगे एक है कि, कि इस्तेमाल किया जा सकता है कुछ भी नहीं प्रदर्शित करता है (IMHO)।

पोम निर्भरता:

<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> 

आयात निम्नलिखित हैं:

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

उपयोग:

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

और फिर बस यह इस तरह के रूप में उपयोग:

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

आशा है कि यह आपके लिए काम करता है।

+1

चलाने के बाद आप मैन्युअल रूप से 'लकड़हारा के साथ प्रवेश कर रहे हैं .info ("butonCLick"); '। मैं अब भी ऐसा कर रहा हूं, लेकिन यह एक दर्द और अविश्वसनीय भी है। मैं एक मूल सेलेनियम लॉगर प्राप्त करना चाहता हूं और ऐसा करता हूं। – Zombies

3

driver.manage().logs() 

प्रयास करें आप है कि लॉग प्राप्त और लॉग प्रकार के तरीकों लॉग्स इंटरफेस मिल जाएगा। देखें Logs interface docs