@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/[email protected]/components/driver_component.js:8720)
at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/POORVA~1.SHA/AppData/Local/Temp/anonymous8563012586736156603webdriver-profile/extensions/[email protected]/components/command_processor.js:10831)
at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/Users/POORVA~1.SHA/AppData/Local/Temp/anonymous8563012586736156603webdriver-profile/extensions/[email protected]/components/command_processor.js:10836)
at <anonymous class>.DelayedCommand.prototype.execute/<(file:///C:/Users/POORVA~1.SHA/AppData/Local/Temp/anonymous8563012586736156603webdriver-profile/extensions/[email protected]/components/command_processor.js:10778)
L'erreur est générée par la méthode get de webdriver qui vous dirige vers l'url que vous avez fournie. Il manque probablement un protocole à votre URL. Donc, une hypothèse sauvage serait que vous transmettez l'URL sous la forme www.example.com
, mais ce que vous voulez donner est http://www.example.com
org.openqa.Selenium.WebDriverException: f.QueryInterface is not a function
Une exception se produit à cause du protocole manquant. Si vous utilisez une URL sans protocole tel que (http ou https), alors l'exception ci-dessus est levée.
J'ai rencontré cette erreur dans une application Web Ruby on Rails lors de l'exécution de tests de fonctionnalité avec rspec/capybara.
Pour moi, cela a été corrigé en ajoutant un "/" à l'avant de l'URL dans la méthode de visite.
alors visit "your/test/path"
devient visit "/your/test/path"
WebDriver api envoie une requête RESTfull au serveur Selenium pour exécuter une commande. REST services utilise le protocole http ou https pour la requête/réponse. Par conséquent, lorsque nous appelons l'URL sans mentionner le préfixe de protocole (dans notre cas, http), une exception est levée.
Si l'URL est enregistrée avec des guillemets dans le fichier de configuration, l'exception f.queryInterface
est levée. Supprimez simplement les guillemets pour l'URL et cela fonctionnera bien.
Une autre possibilité est que vous ayez accidentellement oublié/supprimé la ligne require 'capybara/Rails'
dans votre fichier d'aide au test dans un projet Ruby on Rails. Cela m'a pris une heure pour réaliser. Putains de fautes de frappe!