[์ ๋ ๋์/Selenium, C#] C#์์ Selenium์ ์ฌ์ฉํ๊ธฐ ์ํ ์ค๋น ๋จ๊ณ
์์ฆ ์ฝ๋ก๋ ๋๋ฌธ์ ์ฌํ๊ทผ๋ฌด๋ก ์ ํํ๋ ๊ธฐ์ ๋ค์ด ์ ์ฐจ ๋๊ณ ์์ต๋๋ค. ์ ์ง์ฌ๋๋ ๋ง์ฐฌ๊ฐ์ง์ธ๋ฐ์. ์ฃผ๋ง์ ์ฌํ๊ทผ๋ฌด๋ฅผ ์ค๋นํ๋ค๊ณ ํด์ ํ์ฌ์์ ๋ฌด์จ ์ผ์ ํ๋์ง ์ดํด๋ดค์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์๊ฐ ์ธ๋ก ๋จ์ ๋ฐ๋ณต ์ ๋ฌด๊ฐ ๋๋ฌด ๋ง๋๊ตฐ์. ํ ์๋ก, ์์ ์ ์ด๋ค ๋ชฉ๋ก์ด ์์ผ๋ฉด ํ๋ํ๋ ์์ดํ ์ ์น ์ฌ์ดํธ์์ ๊ฒ์ํ ํ ํน์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ค์ ์์ ์ ์ ๋ ฅํ๋ ์ ๋ฌด๊ฐ ์์ต๋๋ค. ๋๋, ์น ์ฌ์ดํธ์ ์์ดํ ์ ์ถ๊ฐํ๊ธฐ ์ํด ์ผ์ผ์ด ๋ฒํผ์ ํด๋ฆญํ๋ฉฐ ์ ์๊ฐ์ ๋ณด๋ด๋ ์ ๋ฌด๋ ์์์ต๋๋ค. ์ ๋ ์ง์ ์ด ํ๋ก๊ทธ๋๋จธ์ธ์ง๋ผ, ๋ค์์ ์ง์ผ๋ณด๋ฉด์ ๋ง์ด ์ํ๊น์ํ์ต๋๋ค. ์ง์์ ์๊ฒ ๋์ผ๋ฉด ๋งคํฌ๋ก ํ๋ก๊ทธ๋จ์ด๋ผ๋ ๋ง๋ค์ด ์คฌ์ ํ ๋ฐ ๋ง์ด์ฃ . ๊ฒฐ๊ตญ, ์ด๋ฒ ๊ธฐํ์ ํ๋ก๊ทธ๋จ์ ํ๋ ๋ง๋ค์ด ์ฃผ๋ฉด์ ๋ด์ฌ ๋ฟ๋ฏํดํ์ต๋๋ค.
์, ๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์๋ .Net Selenium ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ ์น ํฌ๋กค๋ง์ ์๊ฐํฉ๋๋ค.
์ ๋ ๋์์ ๊ดํ ์ ๋ฐ์ ์ธ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
[์ ๋ ๋์/Selenium, C#] C#์์ ์ ๋ ๋์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ด์ ๋ฆฌ
[์ ๋ ๋์/Selenium, C#] C#์์ ์ ๋ ๋์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ด์ ๋ฆฌ
์ ๋ ๋์(Selenium)์ด๋? ์ ๋ ๋์์ ์น ๋ธ๋ผ์ฐ์ ์๋ํ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋์ ๋ณด์ด๋ ๋ชจ๋ ์ฝํ ์ธ ์ ์ ๋ ฅ, ํด๋ฆญ, ๊ฐ์ ธ์ค๊ธฐ ๋ฑ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ๋จํ ์น ์ฌ์ดํธ ์ ์๋ถํฐ ๋ก๊ทธ์ธ, ๊ฒ์, ๏ฟฝ
luckygg.tistory.com
C#์์ ์ ๋ ๋์ ์ค๋นํ๊ธฐ
๋ณธ๊ฒฉ์ ์ผ๋ก C#์์ ์ ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ณด๊ฒ ์ต๋๋ค. C# WinForm ํ๋ก์ ํธ๋ฅผ ํ๋ ์์ฑํ๊ณ ๋๊ตฌ > NuGet ํจํค์ง ๊ด๋ฆฌ์ > ์๋ฃจ์ ์ฉ NuGet ํจํค์ง ๊ด๋ฆฌ ๋ฉ๋ด๋ฅผ ํด๋ฆญํฉ๋๋ค.

๊ฒ์ ๊ฒฐ๊ณผ์์ Selenium.WebDriver, Selenium.Support, Selenium.WebDriver.ChromeDriver, DotNetSeleniumExtras.WaitHelpers ๋ฅผ ์ ํํ๊ณ ์ค์นํฉ๋๋ค. ๋ณธ๋ฌธ์์๋ Chrome ๊ธฐ์ค์ผ๋ก ์ค๋ช ํฉ๋๋ค.

๊ฒ์ ๊ฒฐ๊ณผ ์ ํ ํ ์๋์ ๊ฐ์ด '์ค์น' ๋ฒํผ๋ง ๋๋ฅด๋ฉด ์๋์ผ๋ก ์ค์น๋ฉ๋๋ค.

์ค์น๊ฐ ๋ชจ๋ ์๋ฃ๋๋ฉด ์๋์ ๊ฐ์ด ๋ค์์คํ์ด์ค๋ฅผ ์ถ๊ฐํ ํ ๋น๋๊ฐ ๋๋ฉด ์ ์์ ์ผ๋ก ์ค๋น๊ฐ ๋ ๊ฒ๋๋ค.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; //Selenium Library using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI; namespace ExamSelenium { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } }
Selenium์ ์ด์ฉํ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ
์ฐ์ ํฌ๋กฌ์ ์ฌ์ฉํ ์ด์ ๋ก๋ ํฌ๋กฌ์ด ๊ฐ๋ฐ์ ๋๊ตฌ(F12)๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ ๋ ๋์์ ์ฌ์ฉํ๋๋ฐ ํธ๋ฆฌํฉ๋๋ค. ์ ๋ ๋์ API๋ ์น ์ฌ์ดํธ์ HTML ์ฝ๋(Tag, Class Name, ID, XPath ๋ฑ)๋ฅผ ํตํด ์น ์ฌ์ดํธ ์ ์ด ๋๋ ํฌ๋กค๋ง์ด ๊ฐ๋ฅํฉ๋๋ค. ์ข ๋ ์ฝ๊ฒ ์ค๋ช ํด ๋ณผ๊น์?
์ฐ์ ํฌ๋กฌ์ ์คํํ๊ณ ๋ค์ด๋ฒ์ ์ ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ F12๋ฅผ ๋๋ฅด๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋์ต๋๋ค.

์ค๋ฅธ์ชฝ ํ๋ฉด์ ์๋ก๋ฌ๋กํ ์ฝ๋๋ค์ด ๋ณด์ด์ง์? ์ ์ฝ๋๋ค์ HTML ์ฝ๋์ ๋๋ค. ๋ง์ฝ ๋ก๊ทธ์ธ ๋ฒํผ์ ์ฝ๋๋ฅผ ์ป๊ณ ์ถ๋ค๋ฉด ํ์ดํ ๋ฒํผ์ ํด๋ฆญํ ํ ๋ก๊ทธ์ธ ๋ฒํผ ์์ ๊ฐ์ ธ๋ค ๋๊ณ ํด๋ฆญํฉ๋๋ค.

๋ก๊ทธ์ธ ๋ฒํผ์ XPath๋ฅผ ์ป๊ณ ์ถ๋ค๋ฉด, ์๋์ ๊ฐ์ด ๋ง์ฐ์ค ์ฐ์ธก ๋ฉ๋ด์ Copy XPath ๋ฅผ ์ ํํฉ๋๋ค.

์ ๋ ๋์ API๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด XPath๋ ์ ์ฉํ๊ฒ ๋ง์ด ์ฌ์ฉ๋๋ ๊ผญ ๊ธฐ์ตํ์๊ธฐ ๋ฐ๋๋๋ค. ์ด๋ ๊ฒ ์ป์ Tag, Class Name, XPath ๋ฑ์ ์๋์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์น ํ์ด์ง์ Element๋ฅผ ์ฐพ๊ธฐ ์ํ API ์ ๋๋ค.

์ฌ๊ธฐ๊น์ง C#์์ ์ ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ค๋น๋จ๊ณ๋ฅผ ๋ง์น๊ณ , ์ดํ ํฌ์คํ ์ ํตํด ์์ ํ๋ก๊ทธ๋จ์ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
'Programming > Selenium' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[์ ๋ ๋์/Selenium. C#] ์น ํ์ด์ง์ ํ ์คํธ ๋ฐ์ค์ ๋ฌธ์์ด ์ ๋ ฅํ๊ธฐ (์์ ํฌํจ)
[์ ๋ ๋์/Selenium. C#] ์น ํ์ด์ง์ ํ ์คํธ ๋ฐ์ค์ ๋ฌธ์์ด ์ ๋ ฅํ๊ธฐ (์์ ํฌํจ)
2020.08.04 -
[์ ๋ ๋์/Selenium, C#] C#์์ ์ ๋ ๋์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ด์ ๋ฆฌ
[์ ๋ ๋์/Selenium, C#] C#์์ ์ ๋ ๋์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ด์ ๋ฆฌ
2020.08.02 -
[์ ๋ ๋์/Selenium, C#] ์น ํ์ด์ง์ ๋ฒํผ ํด๋ฆญํ๊ธฐ (์์ ํฌํจ)
[์ ๋ ๋์/Selenium, C#] ์น ํ์ด์ง์ ๋ฒํผ ํด๋ฆญํ๊ธฐ (์์ ํฌํจ)
2020.08.01 -
[์ ๋ ๋์/Selenium, C#] C#์์ Selenium์ ์ด์ฉํ ๋ค์ด๋ฒ ์๋ ๋ก๊ทธ์ธ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ (์์ ํฌํจ)
[์ ๋ ๋์/Selenium, C#] C#์์ Selenium์ ์ด์ฉํ ๋ค์ด๋ฒ ์๋ ๋ก๊ทธ์ธ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ (์์ ํฌํจ)
2020.03.24
๋๊ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.