Selenium - org.openqa.selenium.WebDriverException:

2020-02-09 12:01发布

@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条回答
不美不萌又怎样
2楼-- · 2020-02-09 12:25

I ran into this error in a ruby on rails web app when running feature tests with rspec/capybara.

For me it was fixed by adding a "/" to the front of the url in the visit method.

so visit "your/test/path"

becomes visit "/your/test/path"

查看更多
We Are One
3楼-- · 2020-02-09 12:29

WebDriver api sends RESTfull request to Selenium server to execute a command. REST services uses http or https protocol for request/response. Hence when we call the url without mentioning the protocol prefix (in our case http), exception is thrown.

查看更多
家丑人穷心不美
4楼-- · 2020-02-09 12:29

If the URL is saved with quotes in config file, it throws the f.queryInterface exception. Just remove the quotes for the URL and it will work fine.

查看更多
爷、活的狠高调
5楼-- · 2020-02-09 12:30

The error is being thrown by webdriver's get method that is navigating you to the url that you provided. Most probably your URL is missing a protocol. So a wild guess would be, that you are passing url as www.example.com, but what you want to give is http://www.example.com

查看更多
对你真心纯属浪费
6楼-- · 2020-02-09 12:42

Another possibility is that you accidentally forgot/deleted the line require 'capybara/rails' in your test helper file in a Ruby on Rails project. Took me an hour to realize. Damn typos!

查看更多
虎瘦雄心在
7楼-- · 2020-02-09 12:50

org.openqa.selenium.WebDriverException: f.QueryInterface is not a function exception happens because of the missing protocol. If you are using url without protocol like (http or https) then it throws above exception.

查看更多
登录 后发表回答