2013-03-04 60 views
0

我正在測試的應用程序需要使用用戶的Google帳戶登錄。每次登錄時,它都會顯示/要求我選擇「允許訪問」按鈕,就好像它不記得我已將其添加到我的Google帳戶的授權訪問列表中一樣。當我手動測試時,只有在運行Selenium時纔會發生這種情況。有沒有人遇到過這樣的問題或知道解決方案?提前致謝。Selenium驅動程序不記得用戶身份驗證

WebDriver driver = selenium_driver.get(); // using chrome driver 
baseUrl = defaults.getProperty("base_url"); // this is set to my localhost 
helper.ConnectToURL(baseUrl); 

當此開始發生,我一直在使用硒2.28.0 - 從那時起,我已經更新至2.31.0,但它表現出相同的行爲。

+0

發佈您正在使用的瀏覽器啓動代碼。 – Manigandan 2013-03-04 04:26:06

+2

由於這是由於刪除了Cookie而引起的,因此一個臨時解決方法可能是...... 對所有測試用例執行都使用相同的瀏覽器實例。重複使用它來處理需要Google帳戶身份驗證的所有下一個測試用例。 – Hemanth 2013-03-04 04:44:50

+0

@Manigandan:當然,只是添加到原來的帖子。謝謝。 – danielle 2013-03-04 18:46:14

回答

1

免責聲明:根據ChromeDriver wiki,這是不可能的。它在「已知問題」部分指出「無法指定自定義配置文件」。 (https://code.google.com/p/selenium/wiki/ChromeDriver

在修復某些問題時,我會建議創建或使用默認的chrome配置文件,該配置文件具有您的測試在啓動時使用的授權訪問集。

根據ChromeDriver wiki:「默認情況下,ChromeDriver會爲每個會話創建一個新的臨時配置文件」。

結帳這個職位更深入的信息,關於能力:http://code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches

我做我的.NET和Windows工作;我的設立將是這個樣子:

ChromeOptions chromeOptions = new ChromeOptions(); 
chromeOptions.AddArgument("start-maximized"); 
chromeOptions.AddArgument("user-data-dir=C:\\Users\\username\\AppData\\Local\\Google\\Chrome\\User Data\\Default"); 
capabilities = DesiredCapabilities.Chrome(); 
capabilities.SetCapability(ChromeOptions.Capability, chromeOptions); 
ChromeDriver chromeDriver= new ChromeDriver(this.Environment.ChromeDriverLocation, chromeOptions); 

如果不限於使用Chrome爲你的測試,你可以創建和使用Firefox使用自定義配置文件。

+0

哦,有趣!事情從來沒有發生過 - 我可以通過Selenium登錄,無需每次都准許訪問。這是一個更新的問題嗎? – danielle 2013-03-06 20:09:59

+0

我不能肯定地說。我主要使用自定義配置文件在Firefox中進行測試,因此我沒有收到安全證書警報。 – tmacblane 2013-03-07 16:16:35