我正在使用chromedriver.exe和一些我正在用Selenium的幫助編寫的單元測試。當使用chromedriver的第一個測試執行時,瀏覽器啓動並且測試通過。Chromedriver在Selenium測試中沒有載入頁面
但是,對於使用chromedriver的所有以下測試,瀏覽器無法成功導航到URL。
瀏覽器啓動,瞬間人物數據;出現在地址欄中(如在第一次測試中那樣),然後將正確的URL插入到地址欄中。然而,頁面從不加載,你得到的標準鉻此網頁不可用消息在瀏覽器的身體/帆布與兩個按鈕重新加載和更多。
這是一個已知的問題?
我使用以下版本:
硒:2.41.0.0
Chromedriver.exe:2.9.0.0
的Visual Studio 2013:12.0.30110.00更新1
我有以下初始化方法在我的ChromeTestDriver類在調用方法(又名TestInitialize)中進行所有測試:
ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService(DriverPath);
var chromeOptions = new ChromeOptions();
chromeDriverService.Port = DriverPort; // 9999 - this is the port for the driver, not the webpage
webDriver = new ChromeDriver(chromeDriverService, chromeOptions);
webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
webDriver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10));
我在清理法(又名拆解)下面的代碼爲所有測試:
TestDriver.CloseWindow();
TestDriver.Quit();
以下異常被卡住:
OpenQA.Selenium.NoSuchWindowException:沒有這樣的窗口:目標窗戶已關閉
讓我知道是否可以提供更多信息。
編輯 我注意到IE測試必須在Chrome失敗之前先運行。通常情況下, Chrome測試運行良好。然後運行IE測試。接下來,所有Chrome測試都失敗。
進一步編輯 該另一個不尋常的是,一旦有鉻硒的網站已被玷污,我不能再下載該網站在Chrome在所有。也就是說,如果我在Chrome的地址欄中手動輸入網址,則會顯示相同的空白頁面。如果我運行了Fiddler2(基本上是一個代理服務器),Chrome會變得毫無用處。它再次運作。
我敢肯定,代理不是問題,因爲我的系統沒有代理,當Fiddler2從我的系統中卸載時發生相同的結果。
症狀也可以由位於不同大陸上的我的客戶重現。我們使用GIT進行協作。所以它不侷限於我的系統。
Selenium Google用戶組的用戶建議使用webdriver在非常簡單的情況下(即不作爲測試框架的一部分)重現該錯誤。下面是控制檯應用程序,我創建了這樣做的代碼:
private static string Url = "http://localhost:5556";
static void Main(string[] args)
{
var chromeWebDriver = GetChromeWebDriver();
var nav = chromeWebDriver.Navigate();
nav.GoToUrl(Url);
Thread.Sleep(3000);
chromeWebDriver.Quit();
chromeWebDriver.Dispose();
var iedriver = GetIeDriver();
var nav1 = iedriver.Navigate();
nav1.GoToUrl(Url);
iedriver.Quit();
iedriver.Dispose();
var chromeWebDriver2 = GetChromeWebDriver();
var nav2 = chromeWebDriver2.Navigate();
nav2.GoToUrl(Url);
chromeWebDriver2.FindElement(By.LinkText("Login")).Click();
System.Threading.Thread.Sleep(2000);
chromeWebDriver2.Quit();
chromeWebDriver2.Dispose();
Console.ReadLine();
}
private static IWebDriver GetIeDriver()
{
InternetExplorerDriverService internetExplorerDriverService =
InternetExplorerDriverService.CreateDefaultService(
@"H:\BW\packages\Selenium.WebDriver.IEDriver.2.41.0.1\content");
InternetExplorerOptions internetExplorerOptions = new InternetExplorerOptions();
internetExplorerDriverService.Port = 9999;
IWebDriver webdriver = new InternetExplorerDriver(internetExplorerDriverService, internetExplorerOptions);
return webdriver;
}
private static IWebDriver GetChromeWebDriver()
{
var chromeDriverService =
ChromeDriverService.CreateDefaultService(
@"H:\BW\packages\Selenium.WebDriver.ChromeDriver.2.10.0.0\content");
var chromeOptions = new ChromeOptions();
chromeDriverService.Port = 7777;
IWebDriver chromeWebDriver = new ChromeDriver(chromeDriverService, chromeOptions);
return chromeWebDriver;
}
這看起來不像TestNG(這是我使用的)。你在測試中使用什麼?在所有測試執行後,您是否嘗試過僅執行一次「清理」操作? 從我有限的Selenium知識來看,初始化ChromeDriver的API看起來不同。我正在使用'DesiredCapabilities dc = DesiredCapabilities.chrome()''來執行init。也許這可能會幫助你。 (我知道我在這裏摘取秸稈) – Vish
@Vish DesiredCapabilities API似乎適用於遠程。我正在本地運行我的測試。此外,TestNG是一個Java的東西,而我正在使用.NET。這可能是API看起來不同的原因。謝謝。 – onefootswill
我不確定是否屬實 - 我在本地運行我的測試,並使用DesiredCapabilities API。好的,謝謝澄清。 – Vish