51Testing软件测试论坛

标题: selenium脚本用firefox能跑,ie出错提示找不到元素 [打印本页]

作者: amy_9291    时间: 2014-10-9 09:24
标题: selenium脚本用firefox能跑,ie出错提示找不到元素
又来求各位大神帮忙了。RT,代码除了把
        driver = new FirefoxDriver();
                     改成
        System.setProperty("webdriver.ie.driver", "C:\\Program Files\\seleniumPackage\\IEDriverServer.exe");
        driver = new InternetExplorerDriver();
以外,没其他区别了
代码运行到寻找元素 driver.findElement(By.id("username")).clear(); 时就会报错

机器配置如下:win7旗舰版,32位系统,IE11
                     
报错提示:
org.openqa.selenium.NoSuchWindowException: Unable to find element on closed window (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 17 milliseconds
Build info: version: '2.40.0', revision: 'fbe29a9', time: '2014-02-19 20:54:28'
System info: host: 'WIN-FDVNPHLJRCS', ip: '192.168.0.134', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_67'
Session ID: ee7408fa-bfa3-4f8a-8c17-029589fb93a8
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:6568/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
    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:193)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:573)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:326)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:423)
    at org.openqa.selenium.By$ByXPath.findElement(By.java:357)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:318)
    at com.example.tests.NewLogin2.testNewLogin2(NewLogin2.java:34)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

作者: joykao    时间: 2014-10-9 10:07
错误信息是你那个ie driver 打开的窗口已经被关闭了,元素找不到。。。。
你IE的窗口打开到指定的页面了吗?
作者: amy_9291    时间: 2014-10-9 10:26
joykao 发表于 2014-10-9 10:07
错误信息是你那个ie driver 打开的窗口已经被关闭了,元素找不到。。。。
你IE的窗口打开到指定的页面了吗 ...

URL是没错的,运行后,它弹出IE窗口后我就没做什么过了。
我试了最简单的代码:
                driver.get("http://www.baidu.com");
                driver.findElement(By.id("kw")).sendKeys("123");
也是报这个错的
作者: joykao    时间: 2014-10-9 15:24
amy_9291 发表于 2014-10-9 10:26
URL是没错的,运行后,它弹出IE窗口后我就没做什么过了。
我试了最简单的代码:
                drive ...

方便了解下你的webdriver 版本吗?还有IE driver server的版本
作者: amy_9291    时间: 2014-10-9 15:34
joykao 发表于 2014-10-9 15:24
方便了解下你的webdriver 版本吗?还有IE driver server的版本

selenium-server-standalone-2.40.0
selenium-java-2.40.0
IEDriverServer_Win32_2.42.0.
作者: joykao    时间: 2014-10-10 15:35
amy_9291 发表于 2014-10-9 15:34
selenium-server-standalone-2.40.0
selenium-java-2.40.0
IEDriverServer_Win32_2.42.0.

selenium-server-standalone-2.40.0
selenium-java-2.40.0
把这个更新到最新吧。。。还有server可以不要的哇。。吧selenium-java下所有的jar包添加就可以了
作者: 紅蓮舞    时间: 2014-10-13 14:18
新手报道喽,大家欢迎哟
作者: amy_9291    时间: 2014-10-16 09:25
joykao 发表于 2014-10-10 15:35
selenium-server-standalone-2.40.0
selenium-java-2.40.0
把这个更新到最新吧。。。还有server可以不 ...

更新到2.43.1了,还是不行哇。。。run as junit后,等IE刚打开的时候,马上切换到eclipse的页面,脚本就能跑完了,不会报错了。。。要是不去切换,立马找不到元素
还有啊,我同学的32位机子上就行的,难道跟机子有关??
作者: joykao    时间: 2014-10-16 09:53
amy_9291 发表于 2014-10-16 09:25
更新到2.43.1了,还是不行哇。。。run as junit后,等IE刚打开的时候,马上切换到eclipse的页面,脚本就 ...

在找不到元素的代码之前加上等待。。。。不知道是不是执行过快,如果是的话加上
Thread.Sleep(3000)
其他浏览器上都是好得哇?
作者: yw_hello    时间: 2014-10-16 15:44
楼上解决上面问题了吧,我现在报的问题和你一样
用的版本信息也都一样的
作者: amy_9291    时间: 2014-10-20 11:09
joykao 发表于 2014-10-16 09:53
在找不到元素的代码之前加上等待。。。。不知道是不是执行过快,如果是的话加上
Thread.Sleep(3 ...

我写了等待的代码的。。。&&  firefox上是没问题的




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2