рд▓рд┐рдирдХреНрд╕рд╡рд░ C# рд╡рд░ рд╕реЗрд▓реЗрдирд┐рдпрдо рдЪрд╛рдЪрдгреНрдпрд╛

рд╡рд╛рдкрд░реВрди рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рдЪрдгреА рдСрдЯреЛрдореЗрд╢рди рд╕реЗрд▓реЗрдирд┐рдпрдо рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдбреЗрд╡реНрд╣рд▓рдкрд░рдордзреАрд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрд╛рдп рдЖрдгрд┐ C# рд╕рд░реНрд╡рд╛рдд рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдкреИрдХреА рдПрдХ, рдореНрд╣рдгреВрди рдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреЗ рд╕рдВрдпреЛрдЬрди рдХреЛрдгрддреЗрд╣реА рдкреНрд░рд╢реНрди рдирд┐рд░реНрдорд╛рдг рдХрд░рдд рдирд╛рд╣реА. рдпрд╛ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд┐рдВрдбреЛрдЬрд╕рд╛рдареА рдорд╛рдпрдХреНрд░реЛрд╕реЙрдлреНрдЯрдЪреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдкреНрд░рд╛рдпрдЯрд░реА рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ, рдкрд░рдВрддреБ рдпрд╛ рдХрд╛рд░реНрдпрд╛рд╕рд╛рдареА рд╕реЗрд▓реЗрдирд┐рдпрдо + рд╕реА# рд╕реНрдЯреЕрдХрдордзреВрди рди рдЬрд╛рддрд╛ рдХреЛрдгрддреЗ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЕреЕрдирд╛рд▓реЙрдЧ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рд╣реЗ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рдд рдорд▓рд╛ рд░рд╕ рд╣реЛрддрд╛.

рдорд▓рд╛ рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рдХреЛрдгрддреЗрд╣реА рд░рд╢рд┐рдпрди-рднрд╛рд╖реЗрддреАрд▓ рд▓реЗрдЦ рд╕рд╛рдкрдбрд▓реЗ рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рдореА рд▓рд┐рдирдХреНрд╕рд╡рд░ C# рдордзреНрдпреЗ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдЖрдгрд┐ рдбреАрдмрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдорд╛рдЭрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░реЗрди.

рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓ 18.04-64-рдЬреЗрдиреЗрд░рд┐рдХрд╕рд╣ рдХреБрдмрдВрдЯреВ 4.15.0 99-рдмрд┐рдЯ рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рдУрдПрд╕, рдпреЗрдереВрди рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ ISO рдкреНрд░рддрд┐рдореЗрд╡рд░реВрди рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ. рдЕрдзрд┐рдХреГрдд рд╕рд╛рдЗрдЯ. рдорд▓рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЖрд╣реЗ рдХреА рдХреЛрдгрддреЗрд╣реА рдЖрдзреБрдирд┐рдХ рдЖрдгрд┐ рдмрд░реНтАНрдпрд╛рдкреИрдХреА рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХрд░реЗрд▓.

рдореЛрдиреЛ JIT рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрд╡реГрддреНрддреА 6.6.0.166 рдиреЗ C# рд╕рд╛рдареА CLR рдореНрд╣рдгреВрди рдХрд╛рдо рдХреЗрд▓реЗ. рддреНрдпрд╛рдЪреНрдпрд╛ рдЗрдиреНрд╕реНрдЯреЙрд▓реЗрд╢рдирдордзреНрдпреЗ рдЯрд░реНрдорд┐рдирд▓рдордзреНрдпреЗ (рдХреБрдмрдВрдЯреВрдордзреНрдпреЗ рд╣реЗ рдХреЛрдиреНрд╕реЛрд▓ рдЖрд╣реЗ) рдЕрдиреБрдХреНрд░рдореЗ рдХреЙрдкреА рдХрд░рдгреЗ рдЖрдгрд┐ рдХрдорд╛рдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рд╣реЗ рдкрд╛рди.

рдЖрдгрд┐ IDE рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реЗ MonoDevelop 7.8.4 (рдмрд┐рд▓реНрдб 2), рдореЛрдиреЛ рдкреНрд░рдорд╛рдгреЗрдЪ рд╕реНрдерд╛рдкрд┐рдд.

рд╕реЗрд▓реЗрдирд┐рдпрдо рдмрд░реНтАНрдпрд╛рдЪ рдмреНрд░рд╛рдЙрдЭрд░рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ, рдкрд░рдВрддреБ рдореА рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреАрдВрдЪрд╛ рддреНрд░рд╛рд╕ рдХрд░рдгреНрдпрд╛рд╕ рдЦреВрдк рдЖрд│рд╢реА рд╣реЛрддреЛ рдЖрдгрд┐ рд╕реНрд╡рддрдГрд▓рд╛ рдорд░реНрдпрд╛рджрд┐рдд рдХреЗрд▓реЗ Chrome'рдУрдо, рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ 64-рдмрд┐рдЯ .deb рдкреЕрдХреЗрдЬ.

рдкреБрдвреЗ, рдЖрдореНрд╣реА MonoDevelop рдордзреНрдпреЗ рдПрдХ рдЙрдкрд╛рдп рддрдпрд╛рд░ рдХрд░рддреЛ:

  • MonoDevelop рд▓рд╛рдБрдЪ рдХрд░рд╛
  • "рдлрд╛рдЗрд▓" рдореЗрдиреВрд╡рд░ рдЬрд╛
  • "рд╕реЛрд▓реНрдпреВрд╢рди рддрдпрд╛рд░ рдХрд░рд╛" рдирд┐рд╡рдбрд╛
  • ".NET" рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛
  • "NUnit Library Project" рдирд┐рд╡рдбрд╛ рдЖрдгрд┐ "Next" рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛.
  • рд╕реЛрд▓реНрдпреВрд╢рдирдЪреЗ рдирд╛рд╡ рдЖрдгрд┐ рдорд╛рд░реНрдЧ рджрд░реНрд╢рд╡рд╛, "рддрдпрд╛рд░ рдХрд░рд╛" рдХреНрд▓рд┐рдХ рдХрд░рд╛

рд▓рд┐рдирдХреНрд╕рд╡рд░ 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();
        }
    }
}

рдЪрд╛рдЪрдгреА "рдпреБрдирд┐рдЯ рдЯреЗрд╕реНрдЯреНрд╕" рдЯреЕрдмрдордзреВрди рд▓реЙрдиреНрдЪ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ; рддреА рдкреНрд░рджрд░реНрд╢рд┐рдд рди рдЭрд╛рд▓реНрдпрд╛рд╕, "рдкрд╣рд╛" рдореЗрдиреВрд╡рд░ рдЬрд╛ рдЖрдгрд┐ "рдЪрд╛рдЪрдгреА" рдирд┐рд╡рдбрд╛.

рд▓рд┐рдирдХреНрд╕рд╡рд░ C# рд╡рд░ рд╕реЗрд▓реЗрдирд┐рдпрдо рдЪрд╛рдЪрдгреНрдпрд╛

рдпрд╢рд╕реНрд╡реА рдСрдЯреЛрдореЗрд╢рди =)

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛