Selenium - org.openqa.selenium.WebDriverException:f.QueryInterface不是函数

时间:2014-03-03 11:36:53

标签: java selenium selenium-webdriver webdriver

@Test
public void myDriver() throws IOException, InterruptedException {


    FirefoxDriver myD = new FirefoxDriver();
    String vkw, vxpath, vtestdata;
    long iWait = 1000000000;

    String[][] xTC, xTS;

    xTC = readxl("C:\\Selenium\\KDF.xls", "Test case");
    xTS = readxl("C:\\Selenium\\KDF.xls", "Test steps");
    for (int i = 1; i < xTC.length; i++) {
        if (xTC[i][3].equalsIgnoreCase("Y")) {
            System.out.println("Yes");
            for (int k = 1; k < xTS.length; k++) {
                if (xTC[i][0].equalsIgnoreCase(xTS[k][1])) {
                    vkw = xTS[k][4];
                    vxpath = xTS[k][5];
                    vtestdata = xTS[k][5];

                        /*  if (vkw.equalsIgnoreCase("enter text")){
                                Fentertext(myD, vxpath, vtestdata);
                            }
                            */
                    if (vkw.equalsIgnoreCase("navigate browser")) {
                        FnavigateBrowser(myD, vtestdata);
                    }

                    Thread.sleep(iWait);

                }
            }
        }
    }
}

Error:- org.openqa.selenium.WebDriverException: f.QueryInterface is
not a function Command duration or timeout: 144 milliseconds Build
info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16
16:12:12' System info: host: 'del1-dhp-28988', ip: '172.16.45.14',
os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1',
java.version: '1.7.0_09' Session ID:
043a4dc7-520f-44a5-a74c-c6cb274d50b9 Driver info:
org.openqa.selenium.firefox.FirefoxDriver Capabilities [{platform=XP,
acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true,
databaseEnabled=true, browserName=firefox, handlesAlerts=true,
browserConnectionEnabled=true, webStorageEnabled=true,
nativeEvents=true, rotatable=false, locationContextEnabled=true,
applicationCacheEnabled=true, takesScreenshot=true, version=26.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:193)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
    at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:276)
    at org.openqa.selenium.remote.RemoteWebDriver$RemoteNavigation.to(RemoteWebDriver.java:800)
    at KDF3.FnavigateBrowser(KDF3.java:185)
    at KDF3.myDriver(KDF3.java:50)
    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:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)  
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)  
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)    
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)  
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)     
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)    
    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:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by:
org.openqa.selenium.remote.ErrorHandler$UnknownServerException:
f.QueryInterface is not a function Build info: version: '2.39.0',
revision: 'ff23eac', time: '2013-12-16 16:12:12' System info: host:
'del1-dhp-28988', ip: '172.16.45.14', os.name: 'Windows 7', os.arch:
'amd64', os.version: '6.1', java.version: '1.7.0_09' Driver info:
driver.version: unknown     
    at <anonymous class>.FirefoxDriver.prototype.get(file:///C:/Users/POORVA~1.SHA/AppData/Local/Temp/anonymous8563012586736156603webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:8720)
    at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/POORVA~1.SHA/AppData/Local/Temp/anonymous8563012586736156603webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10831)
    at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/Users/POORVA~1.SHA/AppData/Local/Temp/anonymous8563012586736156603webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10836)
    at <anonymous class>.DelayedCommand.prototype.execute/<(file:///C:/Users/POORVA~1.SHA/AppData/Local/Temp/anonymous8563012586736156603webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10778)

6 个答案:

答案 0 :(得分:57)

webdriver的get方法引发错误,该方法将您导航到您提供的URL。很可能您的URL缺少协议。所以你猜测的是,你传递的网址是www.example.com,但你要提供的是http://www.example.com

答案 1 :(得分:3)

WebDriver api向Selenium服务器发送RESTfull请求以执行命令。 REST服务使用http或https协议进行请求/响应。因此,当我们调用url而不提及协议前缀(在我们的例子中为http)时,抛出异常。

答案 2 :(得分:3)

当使用rspec / capybara运行功能测试时,我在rails web app上的ruby中遇到了此错误。

对我来说,通过在访问方法中在网址的前面添加“/”来修复它。

所以visit "your/test/path"

变为visit "/your/test/path"

答案 3 :(得分:3)

由于缺少协议,发生

'11618632'异常。如果您使用没有协议的URL(http或https),那么它会抛出异常。

答案 4 :(得分:0)

另一种可能性是您在Ruby on Rails项目中意外忘记/删除了测试助手文件中的行require 'capybara/rails'。我花了一个小时才意识到。该死的错字!

答案 5 :(得分:0)

如果在配置文件中使用引号保存URL,则会抛出f.queryInterface异常。只需删除URL的引号,它就可以正常工作。