Я выполняю многопоточный ChromeDriver в Selenium.Кроме того, у меня есть текстовый файл с содержимым для входа:
Email 1
Email 2
Email 3
Email 4
Как запустить 4 потока (т.е. 4 окна Chrome) одновременно?Данные в текстовом файле должны быть поровну разделены между этими 4 потоками и не должны содержать дубликатов.
Вот мой многопоточный фрагмент кода:
private void Button2_Click(object sender, EventArgs e)
{
var login = "mail.txt";
var getloginrd = File.ReadLines(login).ToList();
int countloginrd = getloginrd.Count();
Random getrdlogin = new Random();
int rdlogin = getrdlogin.Next(0, countloginrd);
string getlogin = getloginrd.Skip(rdlogin).First();
Console.WriteLine(getlogin);
int iThread = 0, maxThread = 4;
for (int i = 0; i < maxThread;)
{
if (iThread < maxThread)
{
Interlocked.Increment(ref iThread);
i++;
new Thread(() =>
{
LoginOneThread();
Interlocked.Decrement(ref iThread);
}).Start();
}
else
{
Thread.Sleep(100);
}
}
while (iThread > 0)
{
Thread.Sleep(500);
}
}
private void LoginOneThread()
{
var driverService = ChromeDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true;
//Mở chrome
var drivery = new ChromeDriver(driverService, new ChromeOptions());
drivery.Url = "http://phamnhi.net";
try
{
Thread.Sleep(500);
IWebElement elementuser = drivery.FindElementByName("username");
elementuser.SendKeys(getlogin);
IWebElement elemenlogin = drivery.FindElementById("login-signin");
elemenlogin.Click();
break;
}
catch (NoSuchElementException)
{
}
}