2015-03-13 60 views
2

我寫了一個簡單的代碼,用Selenium提交註冊表單。提交之前,驅動程序應該從主頁來註冊頁面。將驅動程序導航到硒中使用C打開的新窗口#

var firefox = new FirefoxDriver(); 
firefox.Navigate().GoToUrl("http://mywebsite/home"); 

如果我打印firefox.Title,它顯示我的主頁標題currectly

而且在首頁,有一個跡象式按鈕。註冊按鈕鏈接如下。

<a target="_blank" href="SignUp.jsp">Register Here</a> 

導航到註冊頁面,我寫了一行:

firefox.FindElement(By.CssSelector("a[href='SignUp.jsp']")).Click(); 

在此之後,程序顯示我firefox瀏覽器的new window註冊網頁。要導航驅動程序到註冊我寫firefox.Navigate();

現在如果我打印firefox.Title,它再次顯示我的主頁標題

請幫我找出問題所在。提前致謝。

回答

1

使用

firefox.SwitchTo().Window(handle); 

其中handlefirefox.WindowHandles發現其中一個實例。這將在不同的窗口實例之間切換。您可以在IWebDriver.SwitchTo()的文檔中找到更多信息。

2

你幾乎抓住了相同title,因爲你永遠不切換到新打開的窗口

// Get the current window handle so you can switch back later. 
string currentHandle = driver.CurrentWindowHandle; 

// Find the element that triggers the popup when clicked on. 
IWebElement element = driver.FindElement(By.XPath("//*[@id='webtraffic_popup_start_button']")); 

// The Click method of the PopupWindowFinder class will click 
// the desired element, wait for the popup to appear, and return 
// the window handle to the popped-up browser window. Note that 
// you still need to switch to the window to manipulate the page 
// displayed by the popup window. 
PopupWindowFinder finder = new PopupWindowFinder(driver); 
string popupWindowHandle = finder.Click(element); 

driver.SwitchTo().Window(popupWindowHandle); 

// Do whatever you need to on the popup browser, then... 
driver.Close(); 
driver.SwitchToWindow(currentHandle); 

而且,切換到新窗口中,你應該得到新的冠軍之後。

但是,這個窗口處理過程對我來說是完全令人困惑的。 Selenium.Net綁定提供了PopupWindowFinder類來處理窗口。

感謝JimEvans的好作品和this

相關問題