10

控制我正在使用Serenity BDD(Selenium)在Chrome中執行自動化測試。Chrome正在通過自動化測試軟件

我不得不下載新的ChromeDriver,因爲我的測試無法運行 - >測試會打開ChromeDriver,但無法「以用戶身份瀏覽」。當我搜索這個問題時,他們說我必須更新ChromeDriver。

因此,我將ChromeDriver更新至版本2.28,並且我還將Chrome版本更新至版本57.0.2987.98。

但現在 - 每次我跑我的測試這惱人的短信來了:

的Chrome是由自動化測試軟件

控制,它問我,如果我想保存密碼。 (我不能添加照片,因爲我沒有足夠的「點」)

在以前的版本中,我曾設法阻止這些兩件事情:

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

我知道有這一個(A link to same issue), 但有太多的答案不起作用。

任何人都知道如何刪除?

+0

關於「自動控制」文本彈出:是否存在它引起的問題?我有一天在和Chrome驅動器搞混了,它沒有顯示屏幕截圖等,也沒有引起任何元素交互問題。 –

+0

不,不是真的,我有一些組件下彈出,不會顯示在屏幕截圖時,他們被點擊。多數民衆贊成爲什麼:) – BobbyB

+0

這是否能夠導航網址和交互元素? – NarendraR

回答

5

關於「Chrome正在由自動測試軟件控制」文本彈出:它不會影響您的測試。要處理其他事情(例如:保存密碼),您可以在代碼中添加以下行。

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

希望它能工作。

+1

此解決方案不會停止在Java中使用時顯示的通知。 只有'options.addArguments(「disable-infobars」);'工作正常 –

+1

要禁用通知,請添加: options.addArguments(「 - disable-notifications」); –

19

一下添加到您傳遞給駕駛員的選項:

options.addArguments("disable-infobars"); 
0
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"); 
3

五月有人需要這樣的水豚,的Watir應該是這樣的:

Capybara.register_driver :chrome do |app| 
    $driver = Capybara::Selenium::Driver.new(app, {:browser => :chrome, :args => [ "--disable-infobars" ]}) 
end 
0

如果有人使用Rails 5。1+,它改變了結構測試了一下,水豚在此文件中配置現在系統測試:

application_system_test_case.rb 

您可以添加「ARGS」在選項driven_by這樣的:

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

它通過使用addArguments(陣列( 「禁用-信息欄」))

這是對我的作品的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); 
1

雖然disable-infobars路線會工作,它可能會抑制在所有情況下(如建議here)信息欄,而不僅僅是在OP指的是這種情況。如果你沒有得到一些重要的信息,這是最好的辦法,如果將來會導致意想不到的和莫名其妙的行爲。

我認爲這是更好地利用所提供的enable-automation開關禁用它excludeSwitches區域你的配置/設置,而無所作爲至於disable-inforbarsenable-automation交換機的描述:

告知用戶他們的瀏覽器正在被自動測試控制。

對於nightwatch.conf.js它會是這個樣子(和工作對我來說):

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

這應該只是做我們之後:擺脫特定討厭的消息!

編輯[2017-11-14]:這現在導致更爲惱人的Disable Developer Mode Extensions警報/警告。我試過每一個相關的標誌/開關,我可以找到可能有幫助,但無濟於事。我已經提交了一個Chromium的bug,所以我們會看到,如果我得到一個解決方案,我會嘗試在這裏擺動。

0

量角器解決方案:

我來到這裏尋找一個量角器的解決方案,如果有用的人,我發現,從上面的回答可以幫助;用量角器可以Chrome添加特定選項的chromeOptions對象,內部的功能在protractor.config文件中的對象,例如使用上面討論的使用禁用 - 信息欄選項如下:

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

要使用enable -automation上面也討論過:

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

在我的情況下,首選disable-infobars。