λ°˜μ‘ν˜•

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

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

 

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

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

luckygg.tistory.com

μ†Œκ°œ

λ³Έ ν¬μŠ€νŒ…μ—μ„œλŠ” Chrome Web Browserμ—μ„œ μƒˆ νƒ­(New Tab)을 μƒμ„±ν•˜κ³  λ‹«λŠ” 방법을 μ†Œκ°œν•©λ‹ˆλ‹€.

Chrome Web Browser의 νƒ­ 관리

따라 ν•˜κΈ°

μƒˆ 탭을 μƒμ„±ν•˜λŠ” 방법은 두 가지가 μžˆμŠ΅λ‹ˆλ‹€. JavaScriptExecutorλ₯Ό μ΄μš©ν•˜λŠ” 방법과, 단좕킀λ₯Ό μ „μ†‘ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

//1. JavaScript
((IJavaScriptExecutor)_driver).ExecuteScript("window.open();");

//2. Send Key
_driver.FindElement(By.CssSelector("body")).SendKeys(OpenQA.Selenium.Keys.Control + "t");

μ €λŠ” μ•„λž˜μ˜ ν™˜κ²½μ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό ν•˜κ³  μžˆλŠ”λ°, 단좕킀 전솑 방식은 λ™μž‘ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ JavaScriptExecutorλ₯Ό μ΄μš©ν•œ 방법은 μ •μƒμ μœΌλ‘œ μƒˆ 탭이 μƒμ„±λ©λ‹ˆλ‹€. 이 글을 λ³΄μ‹œλŠ” 뢄듀은 λ˜λŠ”λŒ€λ‘œ μ‚¬μš©ν•˜μ‹œλ©΄ λ˜κ² μŠ΅λ‹ˆλ‹€.

.Net Framework 4.6.1
Selenium.Chrome.WebDriver 85.0.0
Selenium.WebDriver 3.141.0

탭을 μƒμ„±ν–ˆμœΌλ©΄ λ“œλΌμ΄λ²„μ˜ 포컀슀λ₯Ό μƒˆ νƒ­μœΌλ‘œ 이동해야 ν•©λ‹ˆλ‹€. μƒˆ 탭이 μƒμ„±λ˜λ©΄ 항상 λ§ˆμ§€λ§‰μ— μœ„μΉ˜ν•˜λ―€λ‘œ, μƒμ„±λœ νƒ­μ˜ Window Handle은 _driver.WindowHandles.Last()둜 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½, 탭을 μƒμ„±ν•˜κ³  첫 번째 νƒ­μ΄λ‚˜ νŠΉμ • νƒ­μœΌλ‘œ μ΄λ™ν•˜κ³  μ‹ΆμœΌλ©΄ μ•„λž˜μ˜ 예제처럼 μ‘μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

//λ§ˆμ§€λ§‰ νƒ­μœΌλ‘œ 이동.
_driver.SwitchTo().Window(_driver.WindowHandles.Last());

//첫 νƒ­μœΌλ‘œ 이동.
_driver.SwitchTo().Window(_driver.WindowHandles.First());

//νŠΉμ • νƒ­ μ €μž₯ ν›„ 이동.
string winHandleBefore = _driver.CurrentWindowHandle;
_driver.SwitchTo().Window(winHandleBefore);

//μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  νƒ­ 확인 ν›„ 이동.
foreach(var window in _driver.WindowHandles)
{
	_driver.SwitchTo().Window(window);
}

μƒˆλ‘œμš΄ νƒ­μœΌλ‘œ 포컀슀λ₯Ό μ΄λ™ν–ˆμœΌλ©΄, 이제 μƒˆ νŽ˜μ΄μ§€μ—μ„œ μž‘μ—…μ΄ μ‹œμž‘λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, νƒ­ 생성 ν›„ μ•„λž˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄, μƒˆ νƒ­μ—μ„œ μƒˆλ‘œμš΄ μ‚¬μ΄νŠΈλ‘œ μ΄λ™ν•˜λŠ” 것이죠.

//Naver.com으둜 이동.
_driver.Navigate().GoToUrl("https://naver.com");

λ§Œμ•½, μƒˆλ‘œμš΄ νƒ­μ—μ„œ μž‘μ—…μ΄ λλ‚˜μ„œ 탭을 λ‹«μ•„μ•Ό ν•˜λŠ” κ²½μš°μ—λŠ” μ•„λž˜μ™€ 같이 μ½”λ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 탭이 ν•˜λ‚˜λ©΄ μ›Ή λΈŒλΌμš°μ €κ°€ λ‹«νžˆμ§€λ§Œ, μ—¬λŸ¬ 탭이 μ‘΄μž¬ν•˜λ©΄ ν¬μ»€μŠ€κ°€ 있던 탭이 λ‹«νž™λ‹ˆλ‹€.

//ν˜„μž¬ νƒ­ λ‹«κΈ°.
_driver.Close();

//νƒ­ 닫은 ν›„ νŠΉμ • νƒ­μœΌλ‘œ 포컀슀 이동.
_driver.SwitchTo().Window(_driver.WindowHandles.First());
주의
 
 

λ§Œμ•½, 탭을 λ‹«κ³  포컀슀λ₯Ό μ΄λ™ν•˜μ§€ μ•Šμ€ 채 κ·ΈλŒ€λ‘œ μž‘μ—…μ„ μ§„ν–‰ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€. 탭을 닫은 ν›„μ—λŠ” λ°˜λ“œμ‹œ μ˜¬λ°”λ₯Έ νƒ­μœΌλ‘œ 포컀슀λ₯Ό 이동해야 ν•©λ‹ˆλ‹€.

λ§ˆμ°¬κ°€μ§€λ‘œ 예제 μ½”λ“œλ₯Ό μ²¨λΆ€ν–ˆμŠ΅λ‹ˆλ‹€. 참고둜 μ—…λ‘œλ“œ μš©λŸ‰ 문제둜 νŒ¨ν‚€μ§€ νŒŒμΌμ€ μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€. Selenium을 μ‚¬μš©ν•˜κΈ° μœ„ν•œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•œ ν›„ λ™μž‘ν•΄λ³΄μ„Έμš”.

ExamSelenium.zip
0.32MB

λ°˜μ‘ν˜•