我正在尝试在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。*; 导入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
实际上,您得到的异常与您在帖子标题中提到的警告无关。
警告 :只是告诉您您没有为硒驱动程序定义任何附加程序(有关更多信息,请参见log4j文档)。因此,基本上,他无法记录您告诉它的位置(因为您没有告诉他在哪里)。
例外 :您(在测试案例中)告诉Selenium驱动程序与网页中的元素进行交互。驾驶员未找到该元素,因此他无法与之交互。
如果您想用谷歌查询更多信息,请查找“元素当前不可见,因此可能无法与之交互”,而不是log4j警告:)