J'essaie d'installer/configurer Selenium pour faire des tests d'interface utilisateur pendant qu'un coéquipier est absent du bureau. J'ai installé Selenium Webdriver et Eclipse, ainsi que les pilotes de navigateur Chrome, Firefox et Edge. J'ai quelques scripts très simples qui lancent le navigateur et ouvrent une URL. J'essaie juste de vérifier que mon installation et ma configuration sont bonnes. Firefox et Edge fonctionnent bien, fonctionnent comme prévu. Cependant, je ne peux pas faire fonctionner chrome.
Voici mon script:
package firstPackage;
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.chrome.ChromeDriver;
import org.openqa.Selenium.chrome.ChromeOptions;
public class FirstScript {
public static void main(String[] args) {
ChromeOptions options = new ChromeOptions();
options.addArguments("disable-infobars");
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.google.com");
}
}
Lorsque je l'exécute, Chrome se lance. Le titre de l'onglet est "données;" et l'URL dans la barre d'adresse est également "données;". Cependant, le navigateur ne navigue pas vers le URL que j'ai spécifiée. Après environ 60 secondes, j'obtiens l'erreur suivante dans la fenêtre Eclipse:
Exception in thread "main" org.openqa.Selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
(Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.15 seconds
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
System info: Host: 'XXXXXXX', ip: 'XXXXXXXXXX', os.name: 'Windows 10', os.Arch: 'AMD64', os.version: '10.0', Java.version: '1.8.0_171'
Driver info: driver.version: ChromeDriver
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:214)
at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:166)
at org.openqa.Selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.Java:53)
at org.openqa.Selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.Java:91)
at org.openqa.Selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.Java:123)
at Java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at Java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
at Java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
at Java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
at Java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at Java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at Java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
at Java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at Java.util.stream.ReferencePipeline.findFirst(Unknown Source)
at org.openqa.Selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.Java:126)
at org.openqa.Selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.Java:73)
at org.openqa.Selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.Java:136)
at org.openqa.Selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.Java:83)
at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:543)
at org.openqa.Selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.Java:207)
at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:130)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:181)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:168)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:157)
at firstPackage.FirstScript.main(FirstScript.Java:14)
Une recherche Google m'a amené à quelques articles qui suggéraient que certains paramètres d'options pourraient faire l'affaire. Ce sont ceux que j'ai essayés:
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("--no-sandbox"); // Bypass OS security model
Aucun de ces problèmes n'a résolu le problème pour moi, le comportement est resté le même.
J'exécute: Windows 10 (build du système d'exploitation 16299) ChromeDriver Selenium 3.12.0 2.39 Chrome 67.0.3396.79
Quelqu'un a-t-il des suggestions sur ce que je pourrais faire de mal?
J'ai résolu cela en Ruby en ajoutant --headless
option. Peut-être que ça aide.