[์ ๋ ๋์/Selenium, C#] ChromeDriver ๋ฒ์ ์๋ ์ ๋ฐ์ดํธ ์ ์ฉ ๋ฐฉ๋ฒ
ํฌ๋กฌ ๋๋ผ์ด๋ฒ ์ ๋ฐ์ดํธ
ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํฌ๋กค๋ง ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ์ ํ์ฌ ์์คํ ์ ์ค์น๋์ด ์๋ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์ ๋ฒ์ ๊ณผ, ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ๋ฒ์ ์ ๋ง์ถ๋ ์์ ์ด ์ฐธ ๊ท์ฐฎ์์ต๋๋ค.
๋ง์ฝ, ๋ฒ์ ์ด ๋ง์ง ์์ผ๋ฉด ๋๋ผ์ด๋ฒ ๋ฒ์ ์ด ์ผ์นํ์ง ์์ ๋์ํ๋ค๋ ์๋ฌ ๋ฉ์์ง๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋์ ์ด๋ฅผ ๋์ฒํ๋ ๋ฐฉ๋ฒ์ ์๋์ ํฌ์คํ ์ ์ฌ๋ฆฐ ์ ์ด ์์ต๋๋ค.
[์ ๋ ๋์/Selenium, C#] ChromeDriver ๋ฒ์ ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ
[์ ๋ ๋์/Selenium, C#] ChromeDriver ๋ฒ์ ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ
ํฌ๋กฌ ๋๋ผ์ด๋ฒ ๋ฒ์ ์ค๋ฅ ํ์ ํฌ๋กฌ ๋๋ผ์ด๋ฒ๋ฅผ ์ด์ฉํ ํฌ๋กค๋ง ํ๋ก๊ทธ๋จ ์ ์ ์ ์๋์ ๋ฉ์์ง๋ ํ ๋ฒ์ฏค์ ๋ดค์ ๊ฒ์ ๋๋ค. session not created: This version of ChromeDriver only supports Chrome version 85 (Session
luckygg.tistory.com
์ต๊ทผ ๋ค์ด ์ด ๋ฐฉ๋ฒ๋ ์ ์ํตํ๋ ๊ฒ์ ํ์ธํ๋๋ฐ์. ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ด ์ต์ ์ด์ง๋ง, ํฌ๋กฌ ๋๋ผ์ด๋ฒ ๋ค์ด๋ก๋ ํ์ด์ง์๋ ๋ฒ์ ๊ณผ ์ผ์นํ๋ ํ์ผ์ด ์์ด ์ ๋๋ก ๋์ํ์ง ์์์ต๋๋ค.
์ฌ์ค, ์ด๋ณด๋ค ๋ ๊ฐํธํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํ๋ก๊ทธ๋จ ์คํ ์ ์๋์ผ๋ก ํฌ๋กฌ ๋๋ผ์ด๋ฒ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ผ ๋ ์ด์ ๊ท์ฐฎ๊ฒ ์ง์ ๋ค์ด๋ก๋ํ ํ์๊ฐ ์์ง์.
๋ณธ๋ฌธ์์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋ฐ๋ผ ํ๊ธฐ
1. C# ํ๋ก์ ํธ ์์ฑํ๊ธฐ
์ฝ์์ด๋ WinForm์ด๋ ์๊ด ์์ต๋๋ค. ์ฌ์ฉํ๊ธฐ ํธํ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ ๋ WinForm ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ต๋๋ค.
2. NuGet์์ Selenium ํจํค์ง ์ค์นํ๊ธฐ
ํ๋ก์ ํธ ์์ฑ ํ Visual Studio ์๋จ ๋ฉ๋ด ์ค ๋๊ตฌ > NuGet ํจํค์ง ๊ด๋ฆฌ์ > ์๋ฃจ์ ์ฉ NuGet ํจํค์ง ๊ด๋ฆฌ ๋ฉ๋ด๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฐพ์๋ณด๊ธฐ ํญ์์ ๊ฒ์๋์ selenium์ ๊ฒ์ํฉ๋๋ค.
๊ฒ์ ๊ฒฐ๊ณผ์์ Selenium.WebDriver์ Selenium.Support ํจํค์ง๋ฅผ ํ๋ก์ ํธ์ ์ค์นํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ๊ฒ์ ๋์ web driver manager๋ฅผ ๊ฒ์ํฉ๋๋ค.
WebDriverManager ํจํค์ง๋ฅผ ํ๋ก์ ํธ์ ์ค์นํฉ๋๋ค.
๋ง์ฝ, Selenium.WeDriver.ChromeDriver ํจํค์ง๋ฅผ ๊ฐ์ด ์ค์นํ๋ฉด ๋๋ผ์ด๋ฒ ์ถฉ๋์ด ๋ฐ์ํด ํฌ๋กฌ ๋๋ผ์ด๋ฒ๊ฐ ์ผ์นํ์ง ์๋๋ค๋ ์ค๋ฅ๊ฐ ๊ณ์ํด์ ๋ฐ์ํฉ๋๋ค.
3. ์ฝ๋ ๊ตฌํ
๊ธฐ๋ณธ์ ์ธ ์ฝ๋ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
//๊ธฐ๋ณธ namespace ์๋ต
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using WebDriverManager;
using WebDriverManager.Helpers;
using WebDriverManager.DriverConfigs.Impl;
namespace ExamSelenium
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
try
{
ChromeDriverService driverService = null;
ChromeOptions options = null;
ChromeDriver driver = null;
//ํฌ๋กฌ ๋๋ผ์ด๋ฒ ์๋ ์
๋ฐ์ดํธ
new DriverManager().SetUpDriver(new ChromeConfig(), VersionResolveStrategy.MatchingBrowser);
driverService = ChromeDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true;
options = new ChromeOptions();
options.AddArgument("disable-gpu");
driver = new ChromeDriver(driverService, options);
driver.Navigate().GoToUrl("https://www.naver.com");
}
catch(Exception exc)
{
MessageBox.Show(exc.Message);
}
}
}
}
Chrome ๊ด๋ จ ๊ฐ์ฒด๋ ์์ ์ ์ค๋ช
ํ ๋ด์ฉ๊ณผ ๋์ผํ๊ณ , 24๋ฒ์งธ ๋ผ์ธ์ DriverManager()
๋ถ๋ถ์ด ํต์ฌ์
๋๋ค. ์ด ์ฝ๋๊ฐ ์คํ๋๋ฉด ํ์ฌ ์์คํ
์ ์ค์น๋์ด ์๋ ๋ธ๋ผ์ฐ์ ์ ์ผ์นํ๋ ํฌ๋กฌ ๋๋ผ์ด๋ฒ๊ฐ ์๋์ผ๋ก ์ค๋น๋ฉ๋๋ค.
ํฌ๋กฌ ๋๋ผ์ด๋ฒ ์ ๋ฐ์ดํธ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
//ํน์ ๋ฒ์
new DriverManager().SetUpDriver(new ChromeConfig(), "2.25")
//ํน์ ์ํคํ
์ฒ
new DriverManager().SetUpDriver(new ChromeConfig(), "Latest", Architecture.X32)
//ํน์ ๋ฒ์ ๋ฐ ํน์ ์ํคํ
์ฒ
new DriverManager().SetUpDriver(new ChromeConfig(), "2.25", Architecture.X64)
//๋ธ๋ผ์ฐ์ ์ ์ผ์นํ๋ ๋ฒ์ (Chrome, Edge, Firefox, Internet Explorer๋ง ํด๋น):
new DriverManager().SetUpDriver(new ChromeConfig(), VersionResolveStrategy.MatchingBrowser);
๊ทธ ์ธ WebDriverManager์ ๋ํด ๋ ๊ถ๊ธํ๋ค๋ฉด ์๋ GitHub ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
https://github.com/rosolko/WebDriverManager.Net
GitHub - rosolko/WebDriverManager.Net: Automatic Selenium Webdriver binaries management for .Net
Automatic Selenium Webdriver binaries management for .Net - GitHub - rosolko/WebDriverManager.Net: Automatic Selenium Webdriver binaries management for .Net
github.com