์น ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ์๋ํ ์ ๋ ๋์ ์๋ ํ ์คํธ ๊ฐ๋ฐ์๋ค ์ฌ์ด์ ๊ณตํต ์๋ฃจ์ C# ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค ํ๋์ด๋ฏ๋ก ์ด๋ฌํ ๋๊ตฌ๋ฅผ ์กฐํฉํด๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๋ ค๋ฉด Windows์ฉ Microsoft์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ ์ ์ํํธ์จ์ด๊ฐ ์์ฃผ ์ฌ์ฉ๋์ง๋ง, ์ด ์์ ์ ์ํด Selenium + C# ์คํ์์ ๋ฒ์ด๋์ง ์๊ณ ๋ ์ด๋ค ๋ฌด๋ฃ ์๋ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ์๊ณ ์ถ์์ต๋๋ค.
์ด ์ฃผ์ ์ ๋ํ ๋ฌ์์์ด ๊ธฐ์ฌ๋ฅผ ์ฐพ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ Linux์์ C#์ผ๋ก ์๋ ํ
์คํธ๋ฅผ ๊ฐ๋ฐํ๊ณ ๋๋ฒ๊น
ํ๊ธฐ ์ํ ํ๊ฒฝ์ ์ค์ ํ ๊ฒฝํ์ ๊ณต์ ํ๊ฒ ์ต๋๋ค.
์ฌ์ฉ๋ OS๋ Linux ์ปค๋ 18.04-64-generic์ด ํฌํจ๋ Kubuntu 4.15.0 99๋นํธ์์ผ๋ฉฐ, ๋ค์์์ ๋ค์ด๋ก๋ํ ISO ์ด๋ฏธ์ง๋ก ์ค์นํ์ต๋๋ค.
Mono JIT ์ปดํ์ผ๋ฌ ๋ฒ์ 6.6.0.166์ C#์ฉ CLR ์ญํ ์ ํ์ต๋๋ค. ์ค์น๋ ๋ช
๋ น์ ํฐ๋ฏธ๋(์ฟ ๋ถํฌ์์๋ Konsole)์ ์์ฐจ์ ์ผ๋ก ๋ณต์ฌํ๊ณ ์คํํ๋ ๊ฒ์ผ๋ก ๊ตฌ์ฑ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ IDE๋ก ์ฌ์ฉ
Selenium์ ๋ง์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์ํ์ง๋ง ๋ชจ๋ ๊ฒ์ ๊ท์ฐฎ๊ฒ ํ๊ธฐ์๋ ๋๋ฌด ๊ฒ์๋ฌ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ ํํ์ต๋๋ค. ํฌ๋กฌ'์ด๋จธ, ์ค์น ์๋ฃ
๋ค์์ผ๋ก MonoDevelop์์ ์๋ฃจ์ ์ ๋ง๋ญ๋๋ค.
- MonoDevelop ์คํ
- "ํ์ผ"๋ฉ๋ด๋ก ์ด๋
- "์๋ฃจ์ ๋ง๋ค๊ธฐ"๋ฅผ ์ ํํ์ธ์.
- โ.NETโ์ ํด๋ฆญํ์ธ์
- "NUnit ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ก์ ํธ"๋ฅผ ์ ํํ๊ณ "๋ค์"์ ํด๋ฆญํ์ธ์.
- ์๋ฃจ์ ์ ์ด๋ฆ๊ณผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๊ณ "๋ง๋ค๊ธฐ"๋ฅผ ํด๋ฆญํ์ธ์.
๋ธ๋ผ์ฐ์ ๋ฅผ ์ ์ดํ๋ ค๋ฉด ๋ช ๊ฐ์ง NuGet ํจํค์ง๋ ํ์ํฉ๋๋ค.
- "ํ๋ก์ ํธ" ๋ฉ๋ด๋ก ์ด๋ํ์ฌ "NuGet ํจํค์ง ์ถ๊ฐ"๋ฅผ ์ ํํ์ธ์.
- Selenium.WebDriver ํจํค์ง๋ฅผ ์ฐพ์ ์ค์นํ์ธ์.
- Selenium.WebDriver.ChromeDriver ํจํค์ง๋ฅผ ์ฐพ์์ ์ค์นํ์ธ์.
๊ทธ๊ฒ ์ ๋ถ์
๋๋ค. ๋จ์ ๊ฒ์ ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ๊ตฌ์ฑ๋์๋์ง ํ์ธํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ๋ฟ์
๋๋ค. ์๋ฃจ์
์ ์์ฑํ ๋ ํ
์คํธ ๋ฉ์๋ Test.cs์ ๋ํ ํ์ผ์ด ์๋์ผ๋ก ์์ฑ๋๋ฉฐ ์ฌ๊ธฐ์ ๋ค์ ๋ช ์ค์ ์ฝ๋๋ฅผ ์
๋ ฅํฉ๋๋ค.
using NUnit.Framework;
using System;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium;
namespace SeleniumTests
{
[TestFixture()]
public class Test
{
[Test()]
public void TestCase()
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://habr.com/");
Assert.IsTrue(driver.Url.Contains("habr.com"), "ะงัะพ-ัะพ ะฝะต ัะฐะบ =(");
driver.Quit();
}
}
}
ํ ์คํธ๋ "Unit Tests" ํญ์์ ์์๋๋ฉฐ, ํ์๋์ง ์์ผ๋ฉด "View" ๋ฉ๋ด๋ก ์ด๋ํ์ฌ "Test"๋ฅผ ์ ํํฉ๋๋ค.
์ฑ๊ณต์ ์ธ ์๋ํ =)
์ถ์ฒ : habr.com