λ°˜μ‘ν˜•

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

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

 

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

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

luckygg.tistory.com

μ†Œκ°œ

λ³Έ ν¬μŠ€νŒ…μ—μ„œλŠ” μ›Ή νŽ˜μ΄μ§€μ˜ 달λ ₯(Date Picker) μš”μ†Œλ₯Ό μ°Ύμ•„ νŠΉμ • λ‚ μ§œλ₯Ό μ„ νƒν•˜λŠ” 방법을 μ†Œκ°œν•©λ‹ˆλ‹€.

달λ ₯(Date Picker) λ™μž‘ μ΄ν•΄ν•˜κΈ°

달λ ₯ UI μ»΄ν¬λ„ŒνŠΈλŠ” μ—¬λŸ¬ μ’…λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. κ·Έ 쀑 λ‚ μ§œλ₯Ό 마우슀둜 ν΄λ¦­ν•˜λŠ” Date Picker νƒ€μž…μœΌλ‘œ 뢄석을 ν•˜κ² μŠ΅λ‹ˆλ‹€.

Date Picker 달λ ₯ 선택

본문의 μ˜ˆμ œλŠ” Date Pickerλ₯Ό μ œκ³΅ν•˜λŠ” jQuery UI μ‚¬μ΄νŠΈμ—μ„œ μ§„ν–‰ν•˜κ² μŠ΅λ‹ˆλ‹€.
링크: https://jqueryui.com/datepicker/

jQuery UI의 Date Picker μ˜ˆμ‹œ

이 달λ ₯은 ν…μŠ€νŠΈ λ°•μŠ€λ₯Ό 클릭해야 달λ ₯이 ν‘œμ‹œλ˜κ³ , λ‚ μ§œλ₯Ό μ„ νƒν•˜λ©΄ μž…λ ₯이 λ©λ‹ˆλ‹€.

Date Picker λ™μž‘

개발자 λ„κ΅¬λ‘œ 달λ ₯(Date Picker) λΆ„μ„ν•˜κΈ°

λ¨Όμ €, 달λ ₯을 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ ν…μŠ€νŠΈ λ°•μŠ€μ˜ μš”μ†ŒλΆ€ν„° ν™•μΈν•©λ‹ˆλ‹€.

달λ ₯을 μƒμ„±ν•˜κΈ° μœ„ν•œ ν…μŠ€νŠΈ λ°•μŠ€ μš”μ†Œ μ°ΎκΈ°

ν…μŠ€νŠΈ λ°•μŠ€λ₯Ό μž…λ ₯ν•˜λ©΄ 달λ ₯이 ν‘œμ‹œλ©λ‹ˆλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ 달λ ₯의 μš”μ†Œλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.

달λ ₯의 μš”μ†Œ μ°ΎκΈ°

달λ ₯μ—λŠ” μ™Όμͺ½, 였λ₯Έμͺ½ ν™”μ‚΄ν‘œ λ²„νŠΌκ³Ό λ‚ μ§œ 선택이 κ°€λŠ₯ν•œ ν…Œμ΄λΈ”μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. 즉, 두 개의 λ²„νŠΌ μš”μ†Œμ™€ 클릭 κ°€λŠ₯ν•œ ν…Œμ΄λΈ” μš”μ†Œκ°€ μžˆλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€.

따라 ν•˜κΈ°

주의
 
 

ν•΄λ‹Ή μ‚¬μ΄νŠΈμ˜ ν…μŠ€νŠΈ λ°•μŠ€ 및 달λ ₯은 iFrame에 μ‘΄μž¬ν•©λ‹ˆλ‹€. λ”°λΌμ„œ iFrame μ „ν™˜ ν›„ μš”μ†Œμ— μ ‘κ·Όν•΄μ•Ό μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ 예제 μ½”λ“œλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

ν…μŠ€νŠΈ λ°•μŠ€μ˜ XPathλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

//*[@id="datepicker"]

ν…μŠ€νŠΈ λ°•μŠ€λ₯Ό ν΄λ¦­ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

var textBox = _driver.FindElementByXPath("//*[@id='datepicker']");
textBox.Click();

그리고 달λ ₯κ³Ό μ™Όμͺ½, 였λ₯Έμͺ½ ν™”μ‚΄ν‘œ λ²„νŠΌμ˜ XPathλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

//*[@id="ui-datepicker-div"]
//*[@id="ui-datepicker-div"]/div/a[1]
//*[@id="ui-datepicker-div"]/div/a[2]

달λ ₯ μš”μ†Œλ₯Ό μ°Ύκ³  λ²„νŠΌμ„ ν΄λ¦­ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

//μ§€λ‚œ 달 μ΄λ™ν•˜κΈ°.
var leftButton = _driver.FindElementByXPath("//*[@id='ui-datepicker-div']/div/a[1]");
leftButton.Click();

//λ‹€μŒ 달 μ΄λ™ν•˜κΈ°.
var rightButton = _driver.FindElementByXPath("//*[@id='ui-datepicker-div']/div/a[2]");
rightButton.Click();

//a Tag둜 λ²„νŠΌ μ ‘κ·Όν•˜κΈ°.
var buttons = datePicker.FindElements(By.TagName("a"));
buttons[0].Click();
buttons[1].Click();

이런 방법도 있고, 달λ ₯μ—μ„œ a Tagλ₯Ό μ°Ύμ•„μ„œ ν΄λ¦­ν•˜λŠ” 방법도 μžˆμŠ΅λ‹ˆλ‹€. κ΅¬ν˜„ν•˜κΈ° λ‚˜λ¦„μž…λ‹ˆλ‹€.

λ‹€μŒμ€ λ‚ μ§œλ₯Ό μ„ νƒν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. λ‚ μ§œλŠ” ν…Œμ΄λΈ”λ‘œ κ΅¬μ„±λ˜μ–΄μžˆκ³ , 이전 ν¬μŠ€νŒ…μ—μ„œ μ„€λͺ…ν•œ ν…Œμ΄λΈ” μš”μ†Œ μ ‘κ·Ό 방법과 λ™μΌν•©λ‹ˆλ‹€.

[μ…€λ ˆλ‹ˆμ›€/Selenium, C#] ν…Œμ΄λΈ”μ˜ μ…€ 데이터 μ·¨λ“ν•˜κΈ° (예제 포함)

 

[μ…€λ ˆλ‹ˆμ›€/Selenium, C#] ν…Œμ΄λΈ”μ˜ μ…€ 데이터 μ·¨λ“ν•˜κΈ° (예제 포함)

μ…€λ ˆλ‹ˆμ›€μ— κ΄€ν•œ μ „λ°˜μ μΈ λ‚΄μš©μ€ μ•„λž˜ 링크λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”. [μ…€λ ˆλ‹ˆμ›€/Selenium, C#] C#μ—μ„œ μ…€λ ˆλ‹ˆμ›€μ„ μ‚¬μš©ν•˜λŠ” 방법 총정리 [μ…€λ ˆλ‹ˆμ›€/Selenium, C#] C#μ—μ„œ μ…€λ ˆλ‹ˆμ›€μ„ μ‚¬μš©ν•˜λŠ” 방법 총정리 μ…€λ ˆοΏ½

luckygg.tistory.com

var table = datePicker.FindElement(By.TagName("table"));
var tbody = table.FindElement(By.TagName("tbody"));
var trs = tbody.FindElements(By.TagName("tr"));
foreach(IWebElement tr in trs)
{
	var tds = tr.FindElements(By.TagName("td"));
	foreach(var td in tds)
	{
		//λ‚ μ§œ 비ꡐ ν›„ 클릭.
		if (td.Text == "3")
		{
			td.Click();
		}
	}
}

μœ„ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ μ•„λž˜μ™€ 같은 κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

예제 μ½”λ“œ μ‹€ν–‰ κ²°κ³Ό

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

ExamSelenium.zip
0.01MB

λ°˜μ‘ν˜•