紧接上文啊!
这个方法
其实就是使用打开窗口的方式。使用下面这行核心代码:
driver.ExecuteScript("window.open(\"" + url + "\")");
就这么简单。
你可以一次性打开浏览器的20个窗口,然后获取他们的窗口句柄,通过切换窗口句柄,来得到源码,进行操作。
void craw()
{
int currentIndex=0;
List<string > urlList=new List<string>();
for (int i = 0; i < 20; i++)
{
urlList.Add("https://mp.csdn.net/mdeditor/99235045");
}
for (int i = 0; i < 20; i++)
{
driver.ExecuteScript("window.open(\"" + urlList[currentIndex] + "\")");
currentIndex++;
}
List<string> handleList = new List<string>();
var windowHandles = driver.WindowHandles;
foreach (var item in windowHandles)
{
handleList.Add(item);
}
for (int i = 1; i < handleList.Count; i++)
{
driver.SwitchTo().Window(handleList[handleList.Count-i]);//后面的先加载完
if (i ==1)
{
Thread.Sleep(5000);
}
Console.WriteLine(driver.Title);//你对网址的操作,我就是输出了一下标题
}
}
你如果是同时达到五个浏览器,这些二十个窗口是同时进行加载的。最理想的情况下,网速内存都不考虑,那就是提高了近二十倍的速度。
不过这种事情,不可贪多,20个刚刚好,打开窗口过多,会被浏览器给封掉的。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有