J'utilise SoapUI Pro 5.1.2 sur Win7 x32 et essaie de me connecter à Selenium Webdriver dans Groovy TestStep.
À cette fin, j'ai ajouté Selenium-standalone-server.jar
v2.45.0 dans le dossier $SOAP_HOME$\bin\ext
.
Mon code Groovy TestStep:
import org.openqa.Selenium.WebDriver
import org.openqa.Selenium.chrome.ChromeDriver
System.setProperty('webdriver.chrome.driver', 'C:\\\\Windows\\system32\\chromedriver.exe')
log.info(System.getProperty('webdriver.chrome.driver')) //got 'C:\\Windows\system32\chromedriver.exe'
WebDriver driver = new ChromeDriver() // this line causes error
driver.get('http://google.com')
driver.quit()
Lorsque j'essaie d'exécuter cette étape, SoapUI renvoie le message suivant:
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.
Build info:
version: '2.45.0',
revision: '5017cb8',
time: '2015-02-26 23:59:50'
System info:
Host: 'SmithPC',
ip: '10.0.2.15',
os.name: 'Windows 7',
os.Arch: 'x86',
os.version: '6.1',
Java.version: '1.8.0_45'
Driver info:
driver.version: ChromeDriver
error at line: 7
J'ai essayé d'exécuter ce morceau de code via Netbeans IDE, après avoir ajouté le même package Selenium-standalone-server.jar
pour vider le projet Java. Et c'est terminé sans problèmes!
C'est le journal des erreurs de soapUI:
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.
Build info: version: '2.45.0', revision: '5017cb8', time: '2015-02-26 23:59:50'
System info: Host: 'SmithPC', ip: '10.0.2.15', os.name: 'Windows 7', os.Arch: 'x86', os.version: '6.1', Java.version: '1.8.0_45'
Driver info: driver.version: ChromeDriver
at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:593)
at org.openqa.Selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.Java:240)
at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:126)
at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:139)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:171)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:160)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:117)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:62)
at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
at Java.lang.reflect.Constructor.newInstance(Constructor.Java:422)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.Java:77)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.Java:102)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.Java:57)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.Java:182)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.Java:186)
at Script3.run(Script3.groovy:7)
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.Java:92)
at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory$SoapUIProGroovyScriptEngine.run(SourceFile:79)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.Java:138)
at com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel$RunAction$1.run(GroovyScriptStepDesktopPanel.Java:250)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: Java.lang.NullPointerException
at org.Apache.http.impl.conn.SystemDefaultRoutePlanner.determineProxy(SystemDefaultRoutePlanner.Java:79)
at org.Apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.Java:77)
at org.Apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.Java:124)
at org.Apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.Java:183)
at org.Apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.Java:71)
at org.Apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.Java:55)
at org.openqa.Selenium.remote.internal.ApacheHttpClient.fallBackExecute(ApacheHttpClient.Java:126)
at org.openqa.Selenium.remote.internal.ApacheHttpClient.execute(ApacheHttpClient.Java:72)
at org.openqa.Selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.Java:133)
at org.openqa.Selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.Java:66)
at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:572)
... 23 more
J'ai aussi essayé d'utiliser FirefoxDriver()
au lieu de ChromeDriver()
et j'ai eu la même erreur.
J'ai rencontré la même erreur, qui disait:
org.openqa.Selenium.remote.UnreachableBrowserException: Impossible de démarrer une nouvelle session. Les causes possibles sont une adresse invalide du serveur distant ou un échec de démarrage du navigateur.
mais chromedriver.exe
a bien commencé. Je peux le voir dans le gestionnaire de tâches.
Mon environnement est comme suit,
Après de nombreux essais suggérés dans les résultats de Google, ma solution finale consiste à ajouter 127.0.0.1 localhost
à C:\Windows\System32\drivers\etc\hosts
.
J'espère vous aider!
Téléchargez le dernier pilote (chrome ou IE) de seleniumhq.org et utilisez le code ci-dessous.
System.setProperty("webdriver.chrome.driver","<YourPath>chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://www.yahoo.com");
Cela a fonctionné pour moi.
En Selenium ce message d'erreur:
org.openqa.Selenium.remote.UnreachableBrowserException: Impossible démarrer une nouvelle session. Les causes possibles sont l'adresse invalide de la télécommande échec de démarrage du serveur ou du navigateur.
Pourrait avoir beaucoup de causes. Cependant, regarder la pile dans ce cas est dû à un NullPointerException
:
Caused by: Java.lang.NullPointerException
at org.Apache.http.impl.conn.SystemDefaultRoutePlanner.determineProxy(SystemDefaultRoutePlanner.Java:79)
at org.Apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.Java:77)
at org.Apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.Java:124)
Le problème est que vous utilisez Selenium dans SOAPUI. SOAPUI semble définir le proxy par défaut sur null
(ProxySelector.setDefault(null)
). Ainsi, lorsque Selenium obtient le proxy par défaut et invoque une méthode dessus, un NullPointerException
est levé.
Le problème est que vous exécutez votre code dans SOAPUI afin que vous ne puissiez pas obtenir le proxy par défaut avant que SOAPUI ne le définisse à null ... alors une solution de contournement est dans votre test Groovy. Essayez de créer un ProxySelector
et le définissez comme valeur par défaut avant que WebDriver
soit exécuté :
import org.openqa.Selenium.WebDriver
import org.openqa.Selenium.chrome.ChromeDriver
import Java.net.Proxy
import Java.net.ProxySelector
def selectDirectProxy(URI uri) {
final List<Proxy> proxy = new ArrayList<Proxy>()
proxy.add(Proxy.NO_PROXY)
return proxy
}
// create a ProxySelector
ProxySelector proxySelector = [ select : { uri->selectDirectProxy(uri) } ] as ProxySelector
// set as default to avoid null pointer
ProxySelector.setDefault(proxySelector);
// now it's safe to invoke WebDriver...
System.setProperty('webdriver.chrome.driver', 'C:\\\\Windows\\system32\\chromedriver.exe')
log.info(System.getProperty('webdriver.chrome.driver')) //got 'C:\\Windows\system32\chromedriver.exe'
WebDriver driver = new ChromeDriver()
Dans cet exemple, j'étend la classe abstraite ProxySelector
de manière groovy, pour définir au moins un proxy direct. Si nécessaire, il est également possible d'utiliser la classe Proxy
pour configurer un proxy direct et le définir dans la liste, mais avec ce code, j'essaie d'éviter le NPE
en raison de SOAPUI ProxySelector.setDefault(null)
.
Cela pourrait être un problème de compatibilité entre les versions "Selenium", "version de navigateur chrome" et "pilote chromé" que vous utilisez.
Si vous utilisez Selenium 2.53 (comme moi), alors l’utilisation du pilote chromé 2.25 devrait fonctionner pour vous.
Vous pouvez le télécharger ici - https://chromedriver.storage.googleapis.com/index.html?path=2.25/
Il vous a déjà dit ce qui s'est passé:
//got 'C:**\\**Windows\system32\chromedriver.exe'
Essayez de définir le chemin en utilisant l’une des méthodes suivantes:
System.setProperty('webdriver.chrome.driver','C:\\Windows\\system32\\chromedriver.exe')
log.info(System.getProperty('webdriver.chrome.driver'))
OR
System.setProperty('webdriver.chrome.driver','C:/Windows/system32/chromedriver.exe')
log.info(System.getProperty('webdriver.chrome.driver'))
En outre, je ne vous recommanderais pas de stocker chromedriver.exe dans le dossier system32, en particulier si vous ne disposez pas des droits d'administrateur sur le poste de travail. Utilisez smt comme C: /WebDrivers/hromedriver.exe