raowm520 发表于 2012-5-25 12:46:56

selenium 关于多窗口问题求助!

情景:浏览器打开2个窗口,把焦点移动到第2个窗口,在第2个窗口操作完后,把焦点移动到第一个窗口同时关闭第2个窗口。
怎么实现:把焦点移动到第一个窗口同时关闭第2个窗口

raowm520 发表于 2012-5-25 13:05:35

webElement = driver.FindElement(By.XPath("/html/body/div/div/div/div/div/div/div/div/span/ul/li[" + i + "]/dl/dt/a"));
    webElement.Click();//弹出另外一个页面
ReadOnlyCollection<string> handles = driver.WindowHandles;//获取当前打开的窗口数
                driver.SwitchTo().Window(handles);//把焦点定位到第2个窗口
wait.Until(dr2 => dr2.FindElement(By.CssSelector("a.d1")));
                  webElement = driver.FindElement(By.CssSelector("a.d1"));
现在我在第2个窗口找到了找到了这个元素后,要关闭这个窗口,返回第一个页面进行操作。怎么实现?

WANDY 发表于 2012-5-28 16:07:48

本帖最后由 WANDY 于 2012-5-28 16:09 编辑

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

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

arcikisom 发表于 2012-6-15 15:51:21

如果你是在一个主页面上点击弹出一个页面 在弹出页面操作完之后返回到主页面的话 可以试试
driver.switchTo().window(driver.getWindowHandle());

arcikisom 发表于 2012-6-15 15:51:27

如果你是在一个主页面上点击弹出一个页面 在弹出页面操作完之后返回到主页面的话 可以试试
driver.switchTo().window(driver.getWindowHandle());
页: [1]
查看完整版本: selenium 关于多窗口问题求助!