wake-up-neo.net

Chrome wird von einer automatisierten Testsoftware gesteuert

Ich führe automatisierte Tests in Chrome mit Serenity BDD (Selenium) durch.

Ich musste einen neuen ChromeDriver herunterladen, da meine Tests nicht ausgeführt werden konnten -> Der Test öffnet ChromeDriver, konnte jedoch nicht als Benutzer "durchsuchen". Als ich das Problem googelte, sagten sie, ich müsste ChromeDriver aktualisieren.

Daher habe ich ChromeDriver auf Version 2.28 und die Chrome-Version auf Version 57.0.2987.98 aktualisiert.

Aber jetzt - JEDER Zeitpunkt, an dem ich meine Tests durchführe, erscheint dieser nervige Text:

Chrome wird von einer automatisierten Testsoftware gesteuert

Und es fragt mich, ob ich das Passwort speichern möchte. (Ich kann keine Bilder hinzufügen, weil ich nicht genügend "Punkte" habe.)

In der vorherigen Version war es mir gelungen, diese zwei Dinge zu blockieren, indem:

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;
    }
}

Ich weiß, dass es einen gibt ( Ein Link zu demselben Problem ), Aber es gibt zu viele Antworten, die nicht funktionieren. 

Wer weiß, wie man das entfernt?

12
BobbyB

Fügen Sie dies den Optionen hinzu, die Sie an den Treiber übergeben:

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

Informationen zum Text "Chrome wird durch automatisierte Testsoftware gesteuert" - Popup-Fenster: Es beeinflusst Ihre Tests nicht. Und um andere Dinge zu behandeln (z. B. Kennwort speichern), können Sie Ihrem Code unten stehende Zeilen hinzufügen.

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);

Ich hoffe es würde funktionieren.

6
Anuj Teotia

Möchte jemand dies für Capybara brauchen, sollte Watir so sein:

Capybara.register_driver :chrome do |app|
  $driver = Capybara::Selenium::Driver.new(app, {:browser => :chrome, :args => [ "--disable-infobars" ]})
end
3
Mesut GÜNEŞ
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
options.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));    
WebDriver driver = new ChromeDriver(options);

Verwenden Sie die obigen Codes für die neuesten Chrome Treiber.

1
Rajeev

Während die disable-infobars-Route funktioniert, wird sie wahrscheinlich die Infobar in allen Fällen unterdrücken (wie vorgeschlagen hier ), nicht nur in dem Fall, auf den sich das OP bezieht. Dies ist im besten Fall ein Overkill und kann in der Zukunft zu unerwartetem und unerklärlichem Verhalten führen, wenn Sie keine wichtige Nachricht erhalten.

Ich denke, es ist besser, den bereitgestellten Schalter enable-automation durch zu deaktivieren, indem Sie im Bereich excludeSwitches Ihrer Konfiguration/Setup deaktivieren, während Sie nichts mit disable-inforbars zu tun haben. Die Beschreibung des enable-automation-Schalters:

Informieren Sie die Benutzer darüber, dass ihr Browser von einem automatisierten Test gesteuert wird.

Für nightwatch.conf.js würde es ungefähr so ​​aussehen (und für mich gearbeitet):

desiredCapabilities: {
  ...
  chromeOptions: {
    excludeSwitches: ['enable-automation'],
    ...
  }
}

Dies sollte nur das tun, was wir wollen: diese spezifische lästige Nachricht loswerden!

Edit [2017-11-14]: Dies verursacht jetzt eine noch ärgerliche Disable Developer Mode Extensions-Warnung/Warnung. Ich habe alle relevanten Flaggen/Schalter ausprobiert, die hilfreich sein könnten, aber ohne Erfolg. Ich habe einen Fehler mit Chromium gemeldet, also werden wir es sehen und ich werde versuchen, hier durchzugehen, wenn ich eine Lösung bekomme.

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

Der Schalter "disable-info" wird für die neuesten Chromedriver nicht mehr unterstützt. (mindestens 76,0).
@ Rajeevs Antwort funktioniert und hier schreibe ich das Gegenstück für C #.

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddAdditionalOption("useAutomationExtension", false);
chromeOptions.AddExcludedArgument("enable-automation");
Driver = new ChromeDriver(chromeOptions);
0
Piao David

Es funktioniert für mich mit addArguments (array ("disable-infobars"))

Dies ist für 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

Sie können dies verwenden

options1.add_argument("--app=https://www.google.com.ph")
0
JexAce
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

Wenn jemand Rails 5.1+ verwendet, was die Teststruktur etwas geändert hat und Capybara in dieser Datei jetzt für Systemtests konfiguriert ist:

application_system_test_case.rb

Sie können "args" in den Optionen für driven_by wie folgt hinzufügen:

driven_by :Selenium, using: :chrome, screen_size: [1400, 1400], options: { args: ["--disable-infobars"] }
0
PDD

Winkelmesserlösung:

Ich bin hier angekommen und habe nach einer Protractor -Lösung gesucht, falls dies für jemanden nützlich ist, den ich gefunden habe, mit Hilfe der obigen Antworten. Mit Protractor können Sie dem chromeOptions-Objekt Chrome-spezifische Optionen hinzufügen. Innerhalb des Capabilities-Objekts in der Datei protractor.config können Sie beispielsweise die oben beschriebene Option disable-infobars verwenden.

capabilities: {
  'browserName': 'chrome',
  'chromeOptions': {
    'args': ['disable-infobars']
  }
},

Um die Enable-Automation zu verwenden, wurde auch oben diskutiert:

capabilities: {
  'browserName': 'chrome',
  'chromeOptions': {
    'excludeSwitches': ['enable-automation']
  }
}

disable-infobars wird unter meinen Umständen bevorzugt.

0
MatthewThomasGB