[Scraping] WebDriver 충돌 해결

11995 단어 CsharpscrapingCsharp

Scraping 개발하려면, Nuget Pakage 관리에서 Selenium 관련 Pakage 를 받아야합니다.

관련 Pakage 를 받고, 테스트 코드를 작성..

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

// Selenium
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Chromium;
using OpenQA.Selenium.Support.UI;

namespace ScrapingWpf
{
    public partial class MainWindow : Window
    {

        private static IWebDriver driver;

        public MainWindow()
        {
            InitializeComponent();

            ChromiumNetworkConditions conditions = new ChromiumNetworkConditions();

            driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://www.reverbnation.com/");

            var discoverButton = driver.FindElement(By.Id("menu-item-discover"));
            discoverButton.Click();

            var collections = FindElements(By.ClassName("card__contents"));

            foreach (var collection in collections)
            {
                Console.WriteLine(collection.Text);
            }
        }

        static IReadOnlyCollection<IWebElement> FindElements(By by)
        {
            Stopwatch w = Stopwatch.StartNew();

            while (w.ElapsedMilliseconds < 10 * 1000)
            {

                var elements = driver.FindElements(by);

                if (elements.Count > 0) { return elements; }

                Thread.Sleep(10);
            }

            //return null;
            return new ReadOnlyCollection<IWebElement>(new List<IWebElement>());
        }

    }
}

Build 를 진행하는데,

session not created: This version of ChromeDriver only supports Chrome version 85

라는 오류 메시지를 받았습니다.

나는 97 버전인데 ㅎㅎㅎ,,

해당 버전에 맞는 chromedriver.exe 를 다운받으라는 해결법이 있으나, 다운그레이드를 싫어하.............

어쩔 수 없이, git 커밋한걸 돌릴려고 git diff 를 찍어봤는데, 왠걸! ㅎㅎ
운 좋게 발견했습니다.


해결

Pakage 에 포함된 Chrome 버전 설정이 중복된 것으로 보입니다. 그래서 최신걸 남겨두고 삭제했습니다.

  • Chrome 97.0.4692.7100


  • Chrome 85.0.0


목적에 맞게 Nuget Pakage 를 추가하는 습관을 들이는게..

좋은 웹페이지 즐겨찾기