J'exécute des tests automatisés sous Chrome avec Serenity BDD (Selenium).
J'ai dû télécharger un nouveau ChromeDriver car mes tests ne pouvaient pas s'exécuter -> Le test ouvrirait ChromeDriver mais ne pourrait pas "Parcourir en tant qu'utilisateur". Quand j'ai cherché le problème sur Google, ils ont dit que je devais mettre à jour ChromeDriver.
J'ai donc mis à jour ChromeDriver vers la version 2.28 et la version 57.0.2987.98 de Chrome.
Mais maintenant - chaque fois que je lance mes tests, ce texte ennuyeux apparaît:
Chrome est contrôlé par un logiciel de test automatisé
Et il me demande si je veux enregistrer le mot de passe. (Je ne peux pas ajouter de photos car je n'ai pas assez de "points")
Dans la version précédente, j'avais réussi à bloquer ces 2 choses en:
public class CustomChromeDriver implements DriverSource {
@Override
public WebDriver newDriver() {
try {
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
Proxy proxy = new Proxy();
String proxyServer = String.format("AProxyIDontWantToDisplay", System.getenv("proxy.username"), System.getenv("proxy.password"));
proxy.setHttpProxy(proxyServer);
capabilities.setCapability("proxy", proxy);
ChromeOptions options = new ChromeOptions();
options.addArguments(Arrays.asList("--no-sandbox","--ignore-certificate-errors","--homepage=about:blank","--no-first-run"));
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);
return driver;
} catch (Exception e) {
throw new Error(e);
}
}
@Override
public boolean takesScreenshots() {
return true;
}
}
Je sais que celui-ci existe ( Un lien vers le même problème ), Mais il y a trop de réponses qui ne fonctionnent pas.
Quelqu'un qui sait comment enlever ça?
Ajoutez ceci aux options que vous transmettez au pilote:
options.addArguments("disable-infobars");
À propos du message "Chrome est contrôlé par un logiciel de test automatisé": le texte suivant n’a aucune incidence sur vos tests. Et pour gérer d'autres choses (par exemple: enregistrer le mot de passe), vous pouvez ajouter des lignes ci-dessous à votre code.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_settings.popups", 0);
options.addArguments("disable-extensions");
prefs.put("credentials_enable_service", false);
prefs.put("password_manager_enabled", false);
options.setExperimentalOption("prefs", prefs);
options.addArguments("chrome.switches","--disable-extensions");
options.addArguments("--test-type");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(ChromeOptions.CAPABILITY, options);
cap.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);
System.setProperty("webdriver.chrome.driver",*path of chromedriver.exe*);
wb = new ChromeDriver(cap);
J'espère que ça marcherait.
Puisse quelqu'un avoir besoin de ça pour Capybara, Watir devrait être comme ça:
Capybara.register_driver :chrome do |app|
$driver = Capybara::Selenium::Driver.new(app, {:browser => :chrome, :args => [ "--disable-infobars" ]})
end
Alors que la route disable-infobars
fonctionnera, elle supprimera probablement la barre d’infobar dans tous les cas (comme suggéré ici ), et pas seulement le cas auquel le PO fait référence. Dans le meilleur des cas, cela est excessif et pourrait conduire à un comportement inattendu et inexplicable à l'avenir si vous ne recevez pas un message important.
Je pense qu'il est préférable d'utiliser le enable-automation
switch fourni par le désactivant dans la zone excludeSwitches
de votre configuration/configuration sans rien faire en ce qui concerne disable-inforbars
. La description du commutateur enable-automation
:
Informez les utilisateurs que leur navigateur est contrôlé par un test automatisé.
Pour nightwatch.conf.js
cela ressemblerait à quelque chose comme ça (et a fonctionné pour moi):
desiredCapabilities: {
...
chromeOptions: {
excludeSwitches: ['enable-automation'],
...
}
}
Cela ne devrait faire que ce que nous recherchons: nous débarrasser de ce message embêtant!
Edit [2017-11-14]: Cela provoque maintenant une alerte/avertissement Disable Developer Mode Extensions
encore plus gênant. J'ai essayé tous les indicateurs/commutateurs pertinents qui pourraient m'aider, mais en vain. J'ai déposé un bogue avec Chromium, donc nous verrons et j'essaierai de revenir en arrière si j'ai une résolution.
Map<String, Object> prefs = new HashMap<String, Object>();
//To Turns off multiple download warning
prefs.put("profile.default_content_settings.popups", 0);
prefs.put( "profile.content_settings.pattern_pairs.*.multiple-automatic-downloads", 1 );
//Turns off download Prompt
prefs.put("download.Prompt_for_download", false);
prefs.put("credentials_enable_service", false);
//To Stop Save password propmts
prefs.put("password_manager_enabled", false);
ChromeOptions options = new ChromeOptions();
options.addArguments("chrome.switches","--disable-extensions");
//To Disable any browser notifications
options.addArguments("--disable-notifications");
//To disable yellow strip info bar which prompts info messages
options.addArguments("disable-infobars");
options.setExperimentalOption("prefs", prefs);
System.setProperty("webdriver.chrome.driver", "Chromedriver path");
options.addArguments("--test-type");
driver = new ChromeDriver(options);
Log.info("Chrome browser started");
Cela fonctionne pour moi en utilisant addArguments (array ("disable-infobars"))
C'est pour facebook/php-webdriver
$options = new ChromeOptions();
$options->addArguments(array("disable-infobars"));
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
$this->driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
public WebDriver SetupChromeDriver(){
//Initialize Chrome Driver
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("safebrowsing.enabled", "true");
options.setExperimentalOption("prefs", prefs);
options.addArguments("--disable-notifications");
options.addArguments("--start-maximized");
options.addArguments("disable-infobars");
System.setProperty("webdriver.chrome.driver", "E:/Importent Softwares/Chrome Driver/chromedriver_2.37.exe");
driver = new ChromeDriver(options);
return driver;
}
Si quelqu'un utilise Rails 5.1+ , qui a légèrement modifié la structure de test et que Capybara est maintenant configuré dans ce fichier pour les tests du système:
application_system_test_case.rb
Vous pouvez ajouter "args" dans les options de driven_by comme ceci:
driven_by :Selenium, using: :chrome, screen_size: [1400, 1400], options: { args: ["--disable-infobars"] }
Solution de rapporteur:
Je suis arrivé ici à la recherche d'un rapporteur solution, si utile pour tous ceux que j'ai trouvés, avec l'aide des réponses ci-dessus; avec Protractor, vous pouvez ajouter des options spécifiques à Chrome à l'objet chromeOptions, dans l'objet de capacités du fichier protractor.config. Par exemple, pour utiliser l'option disable-infobars décrite ci-dessus, procédez comme suit:
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'args': ['disable-infobars']
}
},
Pour utiliser le enable-automation également discuté ci-dessus:
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'excludeSwitches': ['enable-automation']
}
}
disable-Infobars est préférable dans mes circonstances.