@yraiv

Как сделать запуск нескольких браузеров одновременно?

Всем привет. Есть список прокси (айпи, порт, логин пароль и тд). Мне нужно, что бы программа автоматически шла по списку и выбирала из него данные, с помощью которых входила на сайт и делала свои дела. Как это сделать? Я могу реализовать цикл, который будет использовать данные по типу Password[i] login[i], i++ и так по кругу крутить, но это будет идти друг за другом, следовательно очень долго и такой вариант не годен. Хочется сделать, чтоб открывалось максимум браузеров, столько, сколько паролей. Как это сделать?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;
using System.Threading;
using OpenQA.Selenium.Chrome.ChromeDriverExtensions;
using System.IO;
 
namespace ILoveCyberFourm
{
    public partial class Form1 : Form
    {
 
        IWebDriver Browser;
        public string fileProxyName = @"";
        public int MaxViews;
        public string razdelitel;
        public List<string> ProxyIp = new List<string>();
        public List<int> ProxyPort = new List<int>();
        public List<string> ProxyLogin = new List<string>();
        public List<string> ProxyPassword  =new List<string>();
 
 
        public Form1()
        {
            InitializeComponent();
            LabelMaxViewText();
            openFileDialog1.Filter = "Текстовый документ | *.txt";
            
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
            ChromeOptions options = new ChromeOptions();      
            options.AddArgument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0");
     //       options.AddArgument("ignore-certificate-errors");
            options.AddArguments("--disable-blink-features");
            options.AddArgument("--disable-blink-features=AutomationControlled");
            options.AddExcludedArgument("enable-automation");
            options.AddArguments("--disable-infobars");       
            options.AddHttpProxy(ProxyIp[0],ProxyPort[0],ProxyPassword[0],ProxyLogin[0]); // в качестве примера просто
            //  options.AddArguments("headless"); // Скрытие браузера
    
                Browser = new OpenQA.Selenium.Chrome.ChromeDriver(options);
                Browser.Manage().Window.Maximize();
                Browser.Navigate().GoToUrl("https://тут сайт мой нужный");
                Browser.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                CheckAcceptOption();
                IWebElement FindTextBoxSearch = Browser.FindElement(By.ClassName("char-header-search-module__input"));
                FindTextBoxSearch.SendKeys(textBoxFindVideo.Text + OpenQA.Selenium.Keys.Enter);
                OD();
 
            
 
        }
 
 
        private void CheckAcceptOption()
        {
            Actions actionProvider = new Actions(Browser);
            IWebElement FindOption = Browser.FindElement(By.CssSelector(".char-base-button-module__button.char-base-button-module__contained-accent.char-base-button-module__pointerCursor.char-base-button-module__regular"));
            if (FindOption != null)
            {
                actionProvider.Click(FindOption).Perform();
            }
            else return;
        }
 
 
        private void OD()
        {
            Actions actionProvider = new Actions(Browser);
            IWebElement FindVideo = Browser.FindElement(By.ClassName("pen-h-card-inline__image-wrapper"));
            actionProvider.Click(FindVideo).Perform();
 
        }
 
      
 
        private void LabelMaxViewText()
        {
            LabelMax.Text = "максимально возможное количество = " + MaxViews.ToString();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                fileProxyName = openFileDialog1.FileName;
            }
        }
 
        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            string[] split;
            StreamReader Filen = new StreamReader(fileProxyName);
            while ((razdelitel = Filen.ReadLine()) != null)
            {
               
                split = razdelitel.Split(':');
                var timeIpProxy = split[0];
                var timePortProxy = split[1];
                var timeProxyLogin = split[2];
                var timeProxyPassword = split[3];
                ProxyIp.Add(timeIpProxy);
                int x = Int32.Parse(timePortProxy);
                ProxyPort.Add(x);
                ProxyLogin.Add(timeProxyLogin);
                ProxyPassword.Add(timeProxyPassword);
                MaxViews++;
            }
            LabelMaxViewText();
            Filen.Close();
        }
    }
}
  • Вопрос задан
  • 205 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
попробуй добавить в командную строку браузера --profile-directory="Profile 1", где "profile 1" имя профиля, а точнее подкаталога где он будет сохраняться

на каждый браузер создавай свой IWebDriver
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы