51Testing软件测试论坛

标题: 【已解决】关于selenium在IE8浏览器下运行失败,Could not start a new session [打印本页]

作者: guoningiris    时间: 2013-3-27 21:38
标题: 【已解决】关于selenium在IE8浏览器下运行失败,Could not start a new session
本帖最后由 guoningiris 于 2013-3-28 16:06 编辑

求助有用过selenium的童鞋们,我在eclipse下运行以下JAVA程序,调用firefox,访问www.baidu.com,输入文字搜索。这个脚本运行正常。
  1. package com.example.tests;
  2. import org.openqa.selenium.By;
  3. import org.openqa.selenium.WebDriver;
  4. import org.openqa.selenium.WebElement;
  5. import org.openqa.selenium.firefox.FirefoxDriver;
  6. import org.openqa.selenium.support.ui.ExpectedCondition;
  7. import org.openqa.selenium.support.ui.WebDriverWait;

  8. public class ExampleForFireFox{

  9.         /**
  10.          * @param args
  11.          */
  12.         public static void main(String[] args) {
  13.                
  14.               System.setProperty("webdriver.firefox.bin", "D:\\Program Files For Work\\Mozilla Firefox\\firefox.exe");
  15.               WebDriver driver = new FirefoxDriver();
  16.               driver.get("http://www.baidu.com");          
  17.               System.out.println("1 Page title is: " + driver.getTitle());
  18.                       WebElement element = driver.findElement(By.id("kw"));
  19.               // 输入关键字
  20.               element.sendKeys("zTree");
  21.               element.submit();
  22.               (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
  23.                   public Boolean apply(WebDriver d) {
  24.                       return d.getTitle().toLowerCase().endsWith("ztree");
  25.                   }
  26.               });
  27.               System.out.println("2 Page title is: " + driver.getTitle());
  28.               //关闭浏览器
  29.               driver.quit();
  30.         }
  31. }
复制代码
但是当我把其中webdriver换成IEdriver的时候,运行就报错了,代码如下:
  1. package com.example.tests;
  2. import org.openqa.selenium.By;
  3. import org.openqa.selenium.WebDriver;
  4. import org.openqa.selenium.WebElement;
  5. import org.openqa.selenium.ie.InternetExplorerDriver;
  6. public class ExampleForInternet {

  7.         /**
  8.          * @param args
  9.          */
  10.         public static void main(String[] args) {
  11.                 // TODO Auto-generated method stub
  12.                 System.setProperty("webdriver.ie.driver","C:\\Program Files\\Internet Explorer\\iexplore.exe");
  13.                 System.out.println("InternetExplorerDriver opened");
  14.                 WebDriver driver=new InternetExplorerDriver();
  15.                 driver.get("http://www.baidu.com/");
  16.                 System.out.println("InternetExplorerDriver opened"+driver.getTitle());
  17.                 //WebElement element =driver.findElement(arg0)
  18.                 WebElement element=driver.findElement(By.id("kw"));
  19.                 element.sendKeys("你好!");
  20.                 element.submit();               
  21.         }
  22.         }
复制代码
报错信息如下:
  1. Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
  2. Build info: version: '2.31.0', revision: '1bd294d', time: '2013-02-27 20:53:56'
  3. System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_23'
  4. Driver info: driver.version: InternetExplorerDriver
  5.         at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
  6.         at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
  7.         at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:201)
  8.         at org.openqa.selenium.ie.InternetExplorerDriver.setup(InternetExplorerDriver.java:105)
  9.         at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:51)
  10.         at com.example.tests.test.main(test.java:27)
  11. Caused by: org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
  12. Build info: version: '2.31.0', revision: '1bd294d', time: '2013-02-27 20:53:56'
  13. System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_23'
  14. Driver info: driver.version: InternetExplorerDriver
  15.         at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:165)
  16.         at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:62)
  17.         at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527)
  18.         ... 5 more
  19. Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:35700/status] to be available after 20553 ms
  20.         at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:104)
  21.         at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:163)
  22.         ... 7 more
  23. Caused by: com.google.common.util.concurrent.UncheckedTimeoutException: java.util.concurrent.TimeoutException
  24.         at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:143)
  25.         at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:79)
  26.         ... 8 more
  27. Caused by: java.util.concurrent.TimeoutException
  28.         at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
  29.         at java.util.concurrent.FutureTask.get(Unknown Source)
  30.         at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:130)
  31.         ... 9 more
复制代码
也不知道是为什么,查询许久未果,求大神帮忙指出问题~~感激不尽
作者: joykao    时间: 2013-3-28 14:29
你需要去搞个IEDriver 的jar包。。。比如说用的WebDriver 2.28, 下载个IEDriverServer_Win32_2.28.0.zip然后解压得到IEDriverServer.exe文件把这个文件放到IE 的安装目录中去
还有System.setProperty("webdriver.ie.driver","C:\\Program Files\\Internet Explorer\\iexplore.exe");这句话你照葫芦画瓢画的不对。。。。
应该这样写System.setProperty("webdriver.ie.driver", "C:/Program Files/Internet Explorer/IEDriverServer.exe")
作者: guoningiris    时间: 2013-3-28 16:01
多谢,刚开始捯饬这东西,只是从网上找了个简单的例子跑跑,我想我还没弄清楚它的工作原理,掩面思过。。。按你的方法试了一下,It worked!接下来可以开始实践+学习了。
下面我贴一下自己解决这个问题的过程:
1、下载一个系统兼容的IEDriver,可以从这里下载(http://code.google.com/p/selenium/downloads/list),我下载了IEDriverServer_Win32_2.31.0.zip
2、解压,放在目录下,我放在了IE安装目录下(C:\Program Files\Internet Explorer)
3、修改代码,System.setProperty("webdriver.ie.driver","C:\\Program Files\\Internet Explorer\\IEDriverServer.exe");
原因嘛,因为selenium无法直接启动IE,所以需要借助IEDriver,至于firefox不用,可能因为是selenium的原配吧。所以,不只IE,chrome浏览器也是需要借助驱动的,都可以在上面的网站下载到。

再一次感谢 joykao~
作者: peachlht    时间: 2014-11-4 18:30
我也遇到这个问题,按照上面说的,下载了IEDriverServer.exe 2.42.0的,但是运行程序后还是报一样的错误,我的机器是win7系统的,是不是IEDriver与win7不兼容啊







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