Ввод данных в селен многопоточный хром - PullRequest
0 голосов
/ 28 сентября 2019

Я выполняю многопоточный 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)
                    {

                    }

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...