Selenium窗不关



我有一些在chrome webdriver上打开多个窗口的代码

MessageBox.Show(chrome.WindowHandles.Count.ToString());
foreach (var link in _links)
{
js.ExecuteScript("window.open('" + link.Item1 + "', '" + link.Item2 + "', 'toolbar=no,scrollbars=no,resizable=no,width=400,height=400')");
}

on start chrome windowHandles = 1这是正确的。执行以上代码后,windowandles = 50,这是正确的。

现在问题开始了当我试图关闭我打开的窗口

for (int i = 1; i < chrome.WindowHandles.Count - 1; i++)
{
chrome.SwitchTo().Window(chrome.WindowHandles[i]).Close();
}
MessageBox.Show(chrome.WindowHandles.Count.ToString());

上面的代码让26个窗口打开,我不明白为什么,你能帮助吗?我做错了什么?

我建议你有一个这样的拆除方法:

[TearDown]
public void TearDown()
{
if (Driver != null)
Driver.Quit();
}

Quit()是一个webdriver命令,该命令调用driver.dispose方法,该方法依次关闭所有浏览器窗口并终止WebDriver会话。如果我们在程序结束时不使用quit(), WebDriver会话将不会正确关闭,文件将不会从内存中清除。这可能导致内存泄漏错误。

就像cruisepandey说的,反向操作。(许多秋明石油公司)

Parallel.ForEach(_links, link =>
{
js.ExecuteScript("window.open('" + link.Item1 + "', '" + link.Item2 + "', 'toolbar=no,scrollbars=no,resizable=no,width=1000,height=500')");
HtmlDocument doctab = new HtmlDocument();
doctab.LoadHtml(chrome.PageSource);
_docprodutos.Add(doctab);
});
_links.Reverse();
foreach (var janela in _links)
{
chrome.SwitchTo().Window(janela.Item2).Close();
}

相关内容

  • 没有找到相关文章

最新更新