我有一个应用,用户可以看到2个可能的浏览器窗口/标签。
如果用户在窗口2中并且在窗口1中发生事件,则使用JQuery Title Alert(https://github.com/heyman/jquery-titlealert)更改标题栏的文本作为通知的方式它们在窗口1中发生了什么。标题文本更改将闪烁,直到窗口1聚焦。
这一切都很好。但是,我想使用水豚和硒进行整合测试,我遇到了一个有趣的问题。虽然我可以使用以下内容轻松切换窗口:
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
我希望能够获取未聚焦窗口的文本以测试其文本是否已更改。有谁知道如何:
提前感谢您的帮助!
答案 0 :(得分:2)
您可以使用WebDriverBackedSelenium
GetAllWindowTitles()
。它应该在Ruby中使用最新版本2.19。 C#中的以下示例有效。
IWebDriver driver = new FirefoxDriver();
ISelenium browser = new WebDriverBackedSelenium(driver, driver.Url);
browser.Start();
// open a test page and some popup windows
browser.Open(@"Test.html"); // open the main page which has title 'My Main Window'
browser.Click("btnPop1"); // open a popup window with title 'My Popup 1'
browser.Click("btnPop2"); // open a popup window with title 'My Popup 2'
string[] titles = browser.GetAllWindowTitles();
foreach (string title in titles)
{
Console.WriteLine(title);
}
browser.Close();
Console.ReadLine();
输出符合预期:
My Main Window
My Popup 1
My Popup 2