web-dev-qa-db-fra.com

Chrome est contrôlé par un logiciel de test automatisé

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?

12
BobbyB

Ajoutez ceci aux options que vous transmettez au pilote:

options.addArguments("disable-infobars");
24
jgode

À 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.

6
Anuj Teotia

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
3
Mesut GÜNEŞ

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.

1
cwnewhouse
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");
0
Sasank Sarma

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);
0
Tree Go
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;
}
0
Rishi12

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"] }
0
PDD

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.

0
MatthewThomasGB