λ°˜μ‘ν˜•

eμ…€λ ˆλ‹ˆμ›€μ— κ΄€ν•œ μ „λ°˜μ μΈ λ‚΄μš©μ€ μ•„λž˜ 링크λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”.

[μ…€λ ˆλ‹ˆμ›€/Selenium, C#] C#μ—μ„œ μ…€λ ˆλ‹ˆμ›€μ„ μ‚¬μš©ν•˜λŠ” 방법 총정리

 

[μ…€λ ˆλ‹ˆμ›€/Selenium, C#] C#μ—μ„œ μ…€λ ˆλ‹ˆμ›€μ„ μ‚¬μš©ν•˜λŠ” 방법 총정리

μ…€λ ˆλ‹ˆμ›€(Selenium)μ΄λž€? μ…€λ ˆλ‹ˆμ›€μ€ μ›Ή λΈŒλΌμš°μ € μžλ™ν™”λ₯Ό μœ„ν•œ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. λˆˆμ— λ³΄μ΄λŠ” λͺ¨λ“  μ½˜ν…μΈ μ— μž…λ ₯, 클릭, κ°€μ Έμ˜€κΈ° 등이 κ°€λŠ₯ν•©λ‹ˆλ‹€. κ°„λ‹¨ν•œ μ›Ή μ‚¬μ΄νŠΈ 접속뢀터 둜그인, 검색, οΏ½

luckygg.tistory.com

μ†Œκ°œ

λ³Έ ν¬μŠ€νŒ…μ—μ„œλŠ” headless μ˜΅μ…˜μœΌλ‘œ λ™μž‘ μ‹œ 파일 λ‹€μš΄λ‘œλ“œκ°€ κ°€λŠ₯ν•˜λ„λ‘ μ„€μ •ν•˜λŠ” 방법을 μ†Œκ°œν•©λ‹ˆλ‹€.

headless와 파일 λ‹€μš΄λ‘œλ“œ

μ…€λ ˆλ‹ˆμ›€μ„ μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” 업무 μžλ™ν™” λ•Œλ¬ΈμΌ κ²ƒμž…λ‹ˆλ‹€. 그리고 이런 μžλ™ν™” ν”„λ‘œκ·Έλž¨μ΄ λ™μž‘ν•  λ•Œ μ›Ή νŽ˜μ΄μ§€μ˜ λ™μž‘μ΄ 화면에 보이면 정신없기도 ν•˜κ³ , ν¬μ»€μŠ€κ°€ 되기 λ•Œλ¬Έμ— λ‹€λ₯Έ μž‘μ—…μ„ ν•˜κΈ°κ°€ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

이런 이유둜 λŒ€λΆ€λΆ„μ΄ headless μ˜΅μ…˜μ„ μ„€μ •ν•˜μ—¬ μ›Ή νŽ˜μ΄μ§€ λ™μž‘ 화면을 μˆ¨κΈΈν…λ°μš”. μ΄λ•Œ, μ…€λ ˆλ‹ˆμ›€ 크둬 λ“œλΌμ΄λ²„μ—μ„œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ, 파일 λ‹€μš΄λ‘œλ“œμž…λ‹ˆλ‹€. headless μ˜΅μ…˜μ„ μ„€μ •ν•˜λ©΄ 파일 λ‹€μš΄λ‘œλ“œκ°€ λ™μž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 λ¬Έμ œλŠ” μ•Œλ €μ§„ 이슈이며 크둬 λ“œλΌμ΄λ²„λ§Œ ν•΄λ‹Ήλ˜λŠ”μ§€λŠ” λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€λ§Œ, ν•΄κ²°ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄κ²° 방법

μ•„λž˜μ™€ 같이 headless μ˜΅μ…˜ 외에 behavior 및 downloadPathλ₯Ό 지정해주면 λ˜κ² μŠ΅λ‹ˆλ‹€.

//ChromeDriverService μ΄ˆκΈ°ν™”
ChromeDriverService _driverService = null;
_driverService = ChromeDriverService.CreateDefaultService();
_driverService.HideCommandPromptWindow = true;

//ChromeOptions μ΄ˆκΈ°ν™”
ChromeOptions _options = null;
_options = new ChromeOptions();
_options.AddArgument("headless"); 

var param = new Dictionary<string, object>(); 
param.Add("behavior", "allow"); 

string downloadsPath = ""; //λ‹€μš΄λ‘œλ“œ 경둜 μž…λ ₯. 
param.Add("downloadPath", downloadsPath); 

//ChromeDriver μ΄ˆκΈ°ν™” 
ChromeDriver _driver = null; 
_driver = new ChromeDriver(_driverService, _options); 

var result = ((OpenQA.Selenium.Chrome.ChromeDriver)_driver).ExecuteChromeCommandWithResult("Page.setDownloadBehavior", param); 
_driver.Navigate().GoToUrl("http://www."); //μ›Ή μ‚¬μ΄νŠΈ 이동 
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(timeout_sec);

인터넷에 λ– λ„λŠ” μ—¬λŸ¬ μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈν•΄ λ΄€μ§€λ§Œ μ œλŒ€λ‘œ μ•ˆλ˜λ”κ΅°μš”. ν•˜μ§€λ§Œ 적어도 μœ„ μ½”λ“œλŠ” μ•„λž˜μ˜ ν™˜κ²½μ—μ„œ μ •μƒμ μœΌλ‘œ λ™μž‘ν–ˆμŠ΅λ‹ˆλ‹€.

.Net Framework 4.6.1
Selenium.Chrome.WebDriver 83.0.0
Selenium.WebDriver 3.141.0
λ°˜μ‘ν˜•