แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแžŸแŸแž›แŸแž‰แŸ‰แžผแž˜แž“แŸ…แž›แžพ C# แž“แŸ…แž›แžพแž›แžธแž“แžปแž…

แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž€แž˜แŸ’แž˜แž“แŸƒแž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž‚แŸแž แž‘แŸ†แž–แŸแžšแžŠแŸ„แž™แž”แŸ’แžšแžพ Selenium แžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž‘แžผแž‘แŸ…แž€แŸ’แž“แžปแž„แž…แŸ†แžŽแŸ„แž˜แžขแŸ’แž“แž€แžขแž—แžทแžœแžŒแŸ’แžแž“แŸ autotest แž“แžทแž„ C# แž—แžถแžŸแžถแžŸแžšแžŸแŸแžšแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŠแŸแž–แŸแž‰แž“แžทแž™แž˜แž”แŸ†แž•แžปแžแž˜แžฝแž™ แžŠแžผแž…แŸ’แž“แŸแŸ‡แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž‚แŸ’แž“แžถแž“แŸƒแžงแž”แž€แžšแžŽแŸแž‘แžถแŸ†แž„แž“แŸแŸ‡แž˜แžทแž“แž…แŸ„แž‘แž‡แžถแžŸแŸ†แžŽแžฝแžšแžขแŸ’แžœแžธแžกแžพแž™แŸ” แžŠแžพแž˜แŸ’แž”แžธแžขแž—แžทแžœแžŒแŸ’แžแžŠแŸ„แž™แž”แŸ’แžšแžพแž”แž…แŸ’แž…แŸแž€แžœแžทแž‘แŸ’แž™แžถแž‘แžถแŸ†แž„แž“แŸแŸ‡ แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž€แž˜แŸ’แž˜แžŸแžทแž‘แŸ’แž’แžทแžŠแŸแž–แŸแž‰แž“แžทแž™แž˜แž–แžธ Microsoft แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Windows แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแž”แŸ’แžšแžพแž‡แžถแž‰แžนแž€แž‰แžถแž”แŸ‹ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžแŸ’แž‰แžปแŸ†แž…แžถแž”แŸ‹แžขแžถแžšแž˜แŸ’แž˜แžŽแŸแž…แž„แŸ‹แžŠแžนแž„แžแžถแžแžพ analogues แžฅแžแž‚แžทแžแžแŸ’แž›แŸƒแžขแŸ’แžœแžธแžแŸ’แž›แŸ‡แžขแžถแž…แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แžถแž“แžŠแŸ„แž™แž˜แžทแž“แž…แžถแŸ†แž”แžถแž…แŸ‹แž…แžถแž€แž…แŸแž‰แž–แžธแž‡แž„แŸ‹ Selenium + C# แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžทแž…แŸ’แž…แž€แžถแžšแž“แŸแŸ‡แŸ”

แžŠแŸ„แž™แžŸแžถแžšแžแŸ’แž‰แžปแŸ†แž˜แžทแž“แž”แžถแž“แžšแž€แžƒแžพแž‰แžขแžแŸ’แžแž”แž‘แž‡แžถแž—แžถแžŸแžถแžšแžปแžŸแŸ’แžŸแžธแž›แžพแž”แŸ’แžšแž’แžถแž“แž”แž‘แž“แŸแŸ‡ แžแŸ’แž‰แžปแŸ†แž“แžนแž„แž…แŸ‚แž€แžšแŸ†แž›แŸ‚แž€แž”แž‘แž–แžทแžŸแŸ„แž’แž“แŸแžšแž”แžŸแŸ‹แžแŸ’แž‰แžปแŸ†แž€แŸ’แž“แžปแž„แž€แžถแžšแžšแŸ€แž”แž…แŸ†แž”แžšแžทแž™แžถแž€แžถแžŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž€แžพแž แž“แžทแž„แž”แŸ†แž”แžถแžแŸ‹แž€แŸ†แž แžปแžŸ autotests แž“แŸ…แž€แŸ’แž“แžปแž„ C# แž“แŸ…แž›แžพ LinuxแŸ”

แž”แŸ’แžšแž–แŸแž“แŸ’แž’แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแžŠแŸ‚แž›แž”แŸ’แžšแžพแž‚แžบ Kubuntu 18.04 64-bit แž‡แžถแž˜แžฝแž™ Linux kernel 4.15.0-99-generic แžŠแŸ‚แž›แž”แžถแž“แžŠแŸ†แžกแžพแž„แž–แžธแžšแžผแž”แž—แžถแž– ISO แžŠแŸ‚แž›แž”แžถแž“แž‘แžถแž‰แž™แž€แž–แžธ แž‚แŸแž แž‘แŸ†แž–แŸแžšแž•แŸ’แž›แžผแžœแž€แžถแžš. แžแŸ’แž‰แžปแŸ†แž‡แžฟแžแžถแž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แž›แžธแž“แžปแž…แž‘แŸ†แž“แžพแž” แž“แžทแž„แž–แŸแž‰แž“แžทแž™แž˜แžŽแžถแž˜แžฝแž™แž“แžนแž„แž’แŸ’แžœแžพแŸ”

Mono JIT compiler แž€แŸ†แžŽแŸ‚ 6.6.0.166 แžŠแžพแžšแžแžฝแž‡แžถ CLR แžŸแž˜แŸ’แžšแžถแž”แŸ‹ C# แŸ” แž€แžถแžšโ€‹แžŠแŸ†แžกแžพแž„โ€‹แžšแž”แžŸแŸ‹โ€‹แžœแžถโ€‹แž˜แžถแž“โ€‹แž€แžถแžšโ€‹แž…แž˜แŸ’แž›แž„ แž“แžทแž„โ€‹แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทโ€‹แž–แžถแž€แŸ’แž™โ€‹แž”แž‰แŸ’แž‡แžถโ€‹แž‡แžถโ€‹แž”แž“แŸ’แžแž”แž“แŸ’แž‘แžถแž”แŸ‹โ€‹แž‘แŸ…โ€‹แž€แŸ’แž“แžปแž„โ€‹แžŸแŸ’แžแžถแž“แžธแž™ (แž€แŸ’แž“แžปแž„โ€‹แž‚แžผแž”แŸŠแžปแž“แž‘แžผ แž“แŸแŸ‡โ€‹แž‚แžบโ€‹แž€แžปแž„แžŸแžผแž›) แž‡แžถแž˜แžฝแž™ แž‘แŸ†แž–แŸแžšแž“แŸแŸ‡.

แž“แžทแž„แž”แŸ’แžšแžพแž‡แžถ IDE MonoDevelop 7.8.4 (แž”แž„แŸ’แž€แžพแž 2)แžŠแŸ†แžกแžพแž„แžŸแŸ’แžšแžŠแŸ€แž„แž“แžนแž„แž˜แŸ‰แžผแžŽแžผแŸ”

Selenium แž‚แžถแŸ†แž‘แŸ’แžšแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžšแžปแž€แžšแž€แž‡แžถแž…แŸ’แžšแžพแž“ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžแŸ’แž‰แžปแŸ†แžแŸ’แž‡แžทแž›แž–แŸแž€แž€แŸ’แž“แžปแž„แž€แžถแžšแžšแŸ†แžแžถแž“แžขแŸ’แžœแžธแŸ—แž‚แŸ’แžšแž”แŸ‹แž™แŸ‰แžถแž„ แž แžพแž™แžŠแžถแž€แŸ‹แž€แž˜แŸ’แžšแžทแžแž›แžพแžแŸ’แž›แžฝแž“แžฏแž„ แž€แž˜แŸ’แž˜แžœแžทแž’แžธ Chrome'om, แž”แžถแž“แžŠแŸ†แžกแžพแž„ แž€แž‰แŸ’แž…แž”แŸ‹ .deb 64 แž”แŸŠแžธแž.

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž™แžพแž„แž”แž„แŸ’แž€แžพแžแžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž“แŸ…แž€แŸ’แž“แžปแž„ MonoDevelopแŸ–

  • แž”แžพแž€แžŠแŸ†แžŽแžพแžšแž€แžถแžš MonoDevelop
  • แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž˜แŸ‰แžบแž“แžปแž™ "แžฏแž€แžŸแžถแžš"
  • แž‡แŸ’แžšแžพแžŸแžšแžพแžŸ "แž”แž„แŸ’แž€แžพแžแžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™"
  • แž…แžปแž… โ€œ.NETโ€
  • แž‡แŸ’แžšแžพแžŸแžšแžพแžŸ "แž‚แž˜แŸ’แžšแŸ„แž„แž”แžŽแŸ’แžŽแžถแž›แŸแž™ NUnit" แž แžพแž™แž…แžปแž… "แž”แž“แŸ’แž‘แžถแž”แŸ‹"
  • แž…แž„แŸ’แžขแžปแž›แž”แž„แŸ’แž แžถแž‰แžˆแŸ’แž˜แŸ„แŸ‡แž“แžทแž„แž•แŸ’แž›แžผแžœแž“แŸƒแžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž…แžปแž… "แž”แž„แŸ’แž€แžพแž"

แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแžŸแŸแž›แŸแž‰แŸ‰แžผแž˜แž“แŸ…แž›แžพ C# แž“แŸ…แž›แžพแž›แžธแž“แžปแž…

แžŠแžพแž˜แŸ’แž”แžธแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžšแžปแž€แžšแž€ แžขแŸ’แž“แž€แž€แŸแž“แžนแž„แžแŸ’แžšแžผแžœแž€แžถแžšแž€แž‰แŸ’แž…แž”แŸ‹ NuGet แž–แžธแžšแž”แžธแž•แž„แžŠแŸ‚แžšแŸ–

  • แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž˜แŸ‰แžบแž“แžปแž™ "แž‚แž˜แŸ’แžšแŸ„แž„" แž แžพแž™แž‡แŸ’แžšแžพแžŸแžšแžพแžŸ "แž”แž“แŸ’แžแŸ‚แž˜แž€แž‰แŸ’แž…แž”แŸ‹ NuGet"
  • แžšแž€แž˜แžพแž› แž“แžทแž„แžŠแŸ†แžกแžพแž„แž€แž‰แŸ’แž…แž”แŸ‹ Selenium.WebDriver
  • แžšแž€แž˜แžพแž› แž“แžทแž„แžŠแŸ†แžกแžพแž„แž€แž‰แŸ’แž…แž”แŸ‹ Selenium.WebDriver.ChromeDriver

แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแžŸแŸแž›แŸแž‰แŸ‰แžผแž˜แž“แŸ…แž›แžพ C# แž“แŸ…แž›แžพแž›แžธแž“แžปแž…

แž“แŸ„แŸ‡แž แžพแž™แž‡แžถแž‘แžถแŸ†แž„แžขแžŸแŸ‹ แžขแŸ’แžœแžธแž‘แžถแŸ†แž„แžขแžŸแŸ‹แžŠแŸ‚แž›แž“แŸ…แžŸแŸแžŸแžŸแž›แŸ‹แž‚แžบแžแŸ’แžšแžผแžœแžŸแžšแžŸแŸแžšแž€แžผแžŠแž˜แžฝแž™แž…แŸ†แž“แžฝแž“แžŠแžพแž˜แŸ’แž”แžธแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แžแžถแžขแŸ’แžœแžธแž‚แŸ’แžšแž”แŸ‹แž™แŸ‰แžถแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžŠแžผแž…แžŠแŸ‚แž›แžœแžถแž‚แžฝแžšแžแŸ‚แŸ” แž“แŸ…แž–แŸแž›แž”แž„แŸ’แž€แžพแžแžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™ แžฏแž€แžŸแžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžšแžŸแžถแž€แž›แŸ’แž”แž„ 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"แŸ”

แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแžŸแŸแž›แŸแž‰แŸ‰แžผแž˜แž“แŸ…แž›แžพ C# แž“แŸ…แž›แžพแž›แžธแž“แžปแž…

แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž€แž˜แŸ’แž˜แž‡แŸ„แž‚แž‡แŸแž™ =)

แž”แŸ’แžšแž—แž–: www.habr.com

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹