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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有为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 <anonymous class>.fxdriver.preconditions.visible(file:///C:/Users/Admin/AppData/Local/Temp/anonymous2662838285289924370webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:8791:5)
at <anonymous class>.DelayedCommand.prototype.checkPreconditions_(file:///C:/Users/Admin/AppData/Local/Temp/anonymous2662838285289924370webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11438:1)
at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/Admin/AppData/Local/Temp/anonymous2662838285289924370webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11455:11)
at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/Users/Admin/AppData/Local/Temp/anonymous2662838285289924370webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11460:7)
at <anonymous class>.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
答案

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

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

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

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

另一答案

添加依赖项(pom.xml)

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

As of log4j version 0.8.5, at class initialization time class, the file log4j.properties will be searched from the search path used to load classes

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

希望这可能有所帮助

以上是关于没有为logger找到appender(org.apache.http.client.protocol.RequestAddCookies)的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Logback 中将 appender 设置为 logger

logback:两个appender,多个logger,不同级别

log4j:WARN No appenders could be found for logger

log4j配置文件中的additivity属性

Flink No appenders could be found for logger

flume 启动agent报No appenders could be found for logger的解决