ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Selenium ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π°Π²ΡΠΎΡΠ΅ΡΡΠΎΠ², Π° C# ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠ². ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π·Π°ΡΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΠΎΠ΅ ΠΠ ΠΎΡ Microsoft Π΄Π»Ρ Windows, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠ½Π΅ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΠΎΡΡ ΠΎΠ΄Ρ ΠΎΡ ΡΡΠ΅ΠΊΠ° Selenium + C# Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΡ
ΡΡΠ°ΡΠ΅ΠΉ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ Ρ Π½Π΅ Π½Π°ΡΡΠ», ΡΠΎ ΠΏΠΎΠ΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΡΠ΅Π΄Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π°Π²ΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π° C# Π² Linux.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΠ‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Kubuntu 18.04 64-bit Ρ ΡΠ΄ΡΠΎΠΌ Linux 4.15.0-99-generic, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ Ρ ISO-ΠΎΠ±ΡΠ°Π·Π°, ΡΠΊΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ
Π ΡΠΎΠ»ΠΈ CLR Π΄Π»Ρ C# Π²ΡΡΡΡΠΏΠ°Π» Mono JIT ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²Π΅ΡΡΠΈΠΈ 6.6.0.166. ΠΠ³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»(Π² Kubuntu ΡΡΠΎ Konsole) Ρ
Π Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ IDE ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ
Selenium ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ², Π½ΠΎ Π²ΡΠ΅ ΠΌΠ½Π΅ Π±ΡΠ»ΠΎ ΠΌΡΡΠΈΡΡ Π»Π΅Π½Ρ ΠΈ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ»ΡΡ ChromeβΠΎΠΌ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ²
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² 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();
}
}
}
ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ· Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Β«ΠΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΒ», Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ, ΠΈΠ΄Π΅ΠΌ Π² ΠΌΠ΅Π½Ρ Β«ΠΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡΒ» ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Β«Π’Π΅ΡΡΒ».
Π£ΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ =)
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com