没有为logger找到appender(org.apache.http.client.protocol.RequestAddCookies)

我试图在Firefoxdriver上运行selenium webdriver代码,但在运行时我得到一个例外 –

log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies). log4j:WARN Please initialize the log4j system properly. Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with Command duration or timeout: 15 milliseconds Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:30' System info: host: 'Admin-PC', ip: '192.168.2.5', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_65' Session ID: 826ebd51-0bc9-4900-b0ef-d68279bd19fe Driver info: org.openqa.selenium.firefox.FirefoxDriver Capabilities [{platform=XP, databaseEnabled=true, cssSelectorsEnabled=true,javascriptEnabled=true, acceptSslCerts=true, handlesAlerts=true, browserName=firefox, webStorageEnabled=true, nativeEvents=false, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=31.0}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599) at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268) at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:79) at ResumeUpdate.Screen_1_Monster.operation(Screen_1_Monster.java:20) at ResumeUpdate.Screen_1_Monster.main(Screen_1_Monster.java:47) Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Element is not currently visible and so may not be interacted with Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:30' System info: host: 'Admin-PC', ip: '192.168.2.5', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_65' Driver info: driver.version: unknown at .fxdriver.preconditions.visible(file:///C:/Users/Admin/AppData/Local/Temp/anonymous2662838285289924370webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:8791:5) at .DelayedCommand.prototype.checkPreconditions_(file:///C:/Users/Admin/AppData/Local/Temp/anonymous2662838285289924370webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11438:1) at .DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/Admin/AppData/Local/Temp/anonymous2662838285289924370webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11455:11) at .DelayedCommand.prototype.executeInternal_(file:///C:/Users/Admin/AppData/Local/Temp/anonymous2662838285289924370webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11460:7) at .DelayedCommand.prototype.execute/<(file:///C:/Users/Admin/AppData/Local/Temp/anonymous2662838285289924370webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11402:5) 

代码是 – import org.openqa.selenium。*; import org.openqa.selenium.firefox.FirefoxDriver;

 public class Screen_1_Monster { WebDriver driver; WebElement wb; public void operation() throws InterruptedException{ driver = new FirefoxDriver(); //going to the desired website driver.get("https://login.naukri.com/nLogin/Login.php?URL=http%3A%2F%2Fmy.naukri.com%2FMailers%2Fshowdnc%2F%3Furl%3Dhttp%3A%2F%2Fmy.naukri.com%2FHomePage%2Fview%3Fid%3D6e346be1ad03f4d67d75e5911b88ec3df281f50b07bbd08fb4c7f074e87577b79a86cc384cde9c370d99ad6a3af22255"); //User id wb = driver.findElement(By.id("emailTxt")); wb.click(); wb.sendKeys("an@gmail.com"); //Password wb=driver.findElement(By.id("pwd1")); wb.click(); wb.sendKeys("2738"); //Login Button driver.findElement(By.id("sbtLog")).click(); Thread.sleep(20000); //if Usename/Password is incorrect wb=driver.findElement(By.id("srvErr")); String error=wb.getText(); String e=wb.getAttribute("value"); System.out.println(error +" "+ e); //Get status of Welcome page String title=driver.getTitle(); System.out.println(title); }//operation public static void main(String args[]) throws InterruptedException{ Screen_1_Monster s = new Screen_1_Monster(); s.operation(); } }//Scrren_1_Monster 

事实上,您获得的例外与您在post标题中提到的警告无关。

警告 :它只告诉您没有为selenium驱动程序定义任何appender(有关更多信息,请参阅log4j文档 )。 所以基本上,他不能记录你告诉它的地方(因为你没有告诉他在哪里)。

例外 :您告诉(在您的测试用例中)selenium驱动程序与网页中的元素进行交互。 驱动程序没有找到这个元素,所以他无法与之交互。

如果你想谷歌你的例外更多的信息,请查找“元素当前不可见,因此可能无法与之交互”而不是log4j警告:)

添加依赖项(pom.xml)

  log4j log4j 1.2.17  

从log4j版本0.8.5开始,在类初始化时间类中,将从用于加载类的搜索路径中搜索文件log4j.properties

 PropertyConfigurator.configure(System.getProperty("user.dir") + "/src/resources/log4j.properties"); 

创建log4j.properties文件

 log4j.rootLogger=DEBUG, file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=target/logs/httpClient.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

这就够了。

对我来说,它应该在主类的开头添加以下行( 开始后直接)

 Properties log4jProp = new Properties(); log4jProp.setProperty("log4j.rootLogger", "WARN"); PropertyConfigurator.configure(log4jProp); 

请在您的代码中包含此代码段…

System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.Jdk14Logger");

这可能会有所帮助