51Testing软件测试论坛

标题: selenium 关于多窗口问题求助! [打印本页]

作者: raowm520    时间: 2012-5-25 12:46
标题: selenium 关于多窗口问题求助!
情景:浏览器打开2个窗口,把焦点移动到第2个窗口,在第2个窗口操作完后,把焦点移动到第一个窗口同时关闭第2个窗口。
怎么实现:把焦点移动到第一个窗口同时关闭第2个窗口
作者: raowm520    时间: 2012-5-25 13:05
webElement = driver.FindElement(By.XPath("/html/body/div[2]/div/div/div/div/div/div/div[2]/span/ul/li[" + i + "]/dl/dt/a"));
    webElement.Click();//弹出另外一个页面
ReadOnlyCollection<string> handles = driver.WindowHandles;//获取当前打开的窗口数
                driver.SwitchTo().Window(handles[1]);//把焦点定位到第2个窗口
wait.Until(dr2 => dr2.FindElement(By.CssSelector("a.d1")));
                    webElement = driver.FindElement(By.CssSelector("a.d1"));
现在我在第2个窗口找到了找到了这个元素后,要关闭这个窗口,返回第一个页面进行操作。怎么实现?
作者: WANDY    时间: 2012-5-28 16:07
本帖最后由 WANDY 于 2012-5-28 16:09 编辑

driver.close()  ##可以关闭当前窗口。注意是当前
然后,使用Switchto().window 移动driver到第一个窗体。
driver.SwitchTo().Window(handles[0]);  ##??? 这里不确定是0具体的请自行测试。

Python的代码:
  1.         ##Click open new Browser Window
  2.         browser.switch_to_window(browser.window_handles[-1])
  3.         ## browser 移动至list   browser.window_handles  的最后一个元素
  4.         ## 新的browser往往在后面添加,所以,最后一个即最新Browser.
  5.         browser.close()
  6.         ## 执行Close()指令
  7.         browser.switch_to_window(browser.window_handles[-1])
  8.         ## browser 移动至最后一个, 因为最新的窗体已经关闭,所以browser移动的是之前已经打开的窗体。
复制代码

作者: arcikisom    时间: 2012-6-15 15:51
如果你是在一个主页面上点击弹出一个页面 在弹出页面操作完之后返回到主页面的话 可以试试
driver.switchTo().window(driver.getWindowHandle());
作者: arcikisom    时间: 2012-6-15 15:51
如果你是在一个主页面上点击弹出一个页面 在弹出页面操作完之后返回到主页面的话 可以试试
driver.switchTo().window(driver.getWindowHandle());




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2