λ°˜μ‘ν˜•

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

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

 

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

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

luckygg.tistory.com

μ†Œκ°œ

λ³Έ ν¬μŠ€νŒ…μ—μ„œλŠ” μ›Ή νŽ˜μ΄μ§€μ˜ νŠΉμ • ν…Œμ΄λΈ” μš”μ†Œλ₯Ό μ°Ύμ•„ 셀에 μ ‘κ·Όν•˜μ—¬ 데이터λ₯Ό μ·¨λ“ν•˜λŠ” 방법을 μ†Œκ°œν•©λ‹ˆλ‹€.

개발자 λ„κ΅¬λ‘œ ν…Œμ΄λΈ” λΆ„μ„ν•˜κΈ°

ν…Œμ΄λΈ”μ΄ μžˆλŠ” νŽ˜μ΄μ§€μ—μ„œ 개발자 도ꡬλ₯Ό 톡해 ν…Œμ΄λΈ”μ˜ ꡬ성을 확인해 λ³΄κ² μŠ΅λ‹ˆλ‹€. μ˜ˆμ‹œλ‘œ, μ•„λž˜ Wikipedia νŽ˜μ΄μ§€μ˜ 역사 ν…Œμ΄λΈ”μ„ μ°Έκ³ ν•˜κ² μŠ΅λ‹ˆλ‹€.

링크: https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%86%8C%ED%94%84%ED%8A%B8_%EB%B9%84%EC%A3%BC%EC%96%BC_%EC%8A%A4%ED%8A%9C%EB%94%94%EC%98%A4

Wiki νŽ˜μ΄μ§€μ˜ Table μ˜ˆμ‹œ

개발자 λ„κ΅¬λ‘œ ν…Œμ΄λΈ”μ˜ μš”μ†Œλ₯Ό 확인해 보면, table ν‚€μ›Œλ“œμ— tbodyκ°€ μ‘΄μž¬ν•˜κ³ , κ·Έ μ•ˆμ— trκ³Ό thκ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€. tr은 행을, thλŠ” ν—€λ“œλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

개발자 λ„κ΅¬λ‘œ ν™•μΈν•œ ν…Œμ΄λΈ”μ˜ ꡬ성

그리고 각 ν–‰μ˜ 열에 μœ„μΉ˜ν•œ λ°μ΄ν„°λŠ” tdλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

각 ν–‰μ˜ λ°μ΄ν„°λŠ” td둜 μ ‘κ·Ό

즉, table을 λ¨Όμ € μ°Ύκ³  tbodyλ₯Ό 찾은 λ‹€μŒ 각 tr의 th 및 tdλ₯Ό μ ‘κ·Όν•˜λ©΄ ν…Œμ΄λΈ”μ˜ λͺ¨λ“  값을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

따라 ν•˜κΈ°

μœ„ μœ„ν‚€ νŽ˜μ΄μ§€μ˜ ν…Œμ΄λΈ” μš”μ†ŒλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

//*[@id="mw-content-text"]/div[1]/table[2]

νŽ˜μ΄μ§€μ—μ„œ ν…Œμ΄λΈ” μš”μ†Œλ₯Ό μ°ΎλŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

var table = _driver.FindElementByXPath("//*[@id='mw-content-text']/div[1]/table[2]");

tableμ—μ„œ tbodyλ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.

var tbody = table.FindElement(By.TagName("tbody"));

tbodyμ—μ„œλŠ” μ—¬λŸ¬ 개의 tr을 μ°ΎκΈ° μœ„ν•΄ FindElementsλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

var trs = tbody.FindElements(By.TagName("tr"));

찾은 결과물만큼 λ°˜λ³΅ν•˜λ©΄μ„œ 각 tr에 μ‘΄μž¬ν•˜λŠ” th와 td의 데이터λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€. μ•„λž˜ μ½”λ“œμ™€ κ°™μŠ΅λ‹ˆλ‹€.

foreach(var tr in trs)
{
	var ths = tr.FindElements(By.TagName("th"));
	foreach(var th in ths)
	{
		Trace.WriteLine("th: " + th.Text);
	}

	var tds = tr.FindElements(By.TagName("td"));
	foreach (var td in tds)
	{
		Trace.WriteLine("td: " + td.Text);
	}
}

μ΄λ ‡κ²Œ table -> tbody -> tr -> th, td 순으둜 찾으면 μ‰½κ²Œ ν…Œμ΄λΈ” 데이터λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

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

ExamSelenium.zip
0.01MB

λ°˜μ‘ν˜•