рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг (рдЗрдХрд╛рдИ- рдпрд╛ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╡рд┐рдкрд░реАрдд) рдПрдХ рдкреНрд░рдгрд╛рд▓реА (рдХрдХреНрд╖рд╛рдУрдВ) рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рдорд╛рдгреБ рдШрдЯрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рдмрд╛рддрдЪреАрдд рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
рднрд╛рдЧреНрдп рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ, рдореИрдВ рдХреБрдЫ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдврд╛рдВрдЪрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдлреНрд░реЗрдорд╡рд░реНрдХ рд░рдирдЯрд╛рдЗрдо рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рднрд╛рд╖рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред
рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдпреВрдирд┐рдЯ-рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ
рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛ , рдЕрдм рдореИрдВ рдЯреАрдо рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рд╕реЗрд▓реЗрдирд┐рдпрдо
рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ / рдкреГрд╖реНрдареЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬреНрдЮрд╛рдд рдЯреВрд▓ -
рд╕реЗрд▓реЗрдирд┐рдпрдо ред рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рджреЛ рдореБрдЦреНрдп рддрд░реАрдХреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН:
- SeleniumIDE рдореЗрдВ TestSuite рд▓рд┐рдЦрдирд╛ рдФрд░ SeleniumTestRunner, рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдирд╛
- рд╡реЗрдмрд░реАрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдПрдХ рдирдпрд╛ рд╕реЗрд▓реЗрдирд┐рдпрдо "рдлреАрдЪрд░" рд╣реИ рдЬреЛ рдЙрддреНрдкрд╛рдж рдХреА рджреВрд╕рд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреЛрдб (рд╕реА #, рдЬрд╛рд╡рд╛, рдкрд╛рдпрдерди, рд░реВрдмреА) рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдФрд░ / рдпрд╛ рдЖрднрд╛рд╕реА рд░рдирдЯрд╛рдЗрдо рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
WebDriver
рд╕реЗрд▓реЗрдирд┐рдпрдо рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ (рд╕реА #, рдЬрд╛рд╡рд╛) рдХреЗ рд▓рд┐рдП "рдмрд╛рдЗрдВрдбрд░реНрд╕" рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ "рдЕрдзреАрдирд╕реНрде" рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдХрдорд╛рдВрдб рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ WebDriver (FireFoxDriver, InternetExplorerDriver, ChromeDriver - рдЕрдм рд╢рд╛рдорд┐рд▓, OperaSoftware
рд╡рд┐рдХрд╕рд┐рдд рдУрдкреЗрд░рд╛рдбреНрд░рд╛рдЗрд╡рд░ ) рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдПрдХ "рдЖрднрд╛рд╕реА" HtmlUnitDriver рднреА рд╣реИред "рдмреНрд░рд╛рдЙрдЬрд╝рд░" рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕реЗ рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдпрд╣ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВ - HtmlUnitDriver рдореЗрдВ "рдЕрдкрдирд╛" рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП "рд╕рдореГрджреНрдз" рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЗрд╕рдореЗрдВ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдо "рдмреНрд░рд╛рдЙрдЬрд╝рд░" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕рдЯреАрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рд░ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдХрд┐рд╕реА рднреА WebDriver рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдХреЛрдИ рднреА рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рддреБрд▓рдирд╛ рд╕рдВрджрд░реНрдн рд╕реЗ рдХрд░рддрд╛ рд╣реИ
- WebDriver рдПрдХ рд░рдирд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдорд╛рдВрдб рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ (рдЬрдм "рдмреНрд░рд╛рдЙрдЬрд╝рд░" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдкрд░рд┐рдгрд╛рдо "рдХреЛрдб рдкрд░ рд╡рд╛рдкрд╕" рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ
WebDriver рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ "рдмреНрд░рд╛рдЙрдЬрд╝рд░" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕рд╛рд░ RemoteWebDriver рд╡рд░реНрдЧ (рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ) рд╣реИред
- рддрддреНрд╡ рдЦреЛрдЬ: findElement (s) рджреНрд╡рд╛рд░рд╛ *
- CssSelector
- className
- рдИрдж
- LinkText
- рдЯреИрдЧрдирд╛рдо
- XPath
- рдкреЗрдЬ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдкреЗрдЬ рдХрдВрдЯреЗрдВрдЯ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ
- рдордирдорд╛рдирд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди
- рдбреНрд░реИрдЧ-рдПрди-рдбреНрд░реЙрдк рдСрдкрд░реЗрд╢рди
"рдкрд╛рдпрд╛" рддрддреНрд╡реЛрдВ (WebElement рдЗрдВрдЯрд░рдлрд╝реЗрд╕) рдХреЗ рд╕рд╛рде
- рдкрд╛рда (рдЯреЗрдХреНрд╕реНрдЯ) рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
- рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
- рддрддреНрд╡ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
- рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ (рдХреБрдВрдЬреА, рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ, рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдХреНрд░рдо / рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ)
рдЯреЗрд╕реНрдЯ рд░рдирдЯрд╛рдЗрдо
рдЬрд╛рд╡рд╛ рдХреЛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд░рдирдЯрд╛рдЗрдо
JUnit4 рд╣реИ ред
рдЕрд╕реНрд╡реАрдХрд░рдг : рдореИрдВ рдПрдХ рд╢рд╛рдВрдд рдЬрд╛рд╡рд┐рд╕реНрдЯрд╛ рд╣реЛрдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╡рд░рд┐рд╖реНрда рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдЦрд╛рдорд┐рдпрд╛рдВ рдФрд░ рдЕрдиреНрдп "рдПрдВрдЯреАрдкреИрдЯрд░реНрди" рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЦреБрд╢реА рдХреЗ рд╕рд╛рде рд╕реБрдиреВрдВрдЧрд╛ред
рдмреЗрд╕рд┐рдХ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрдЯ рд╡реЗрдм рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕ред
@Ignore abstract public class AbstractWebTest { protected static RemoteWebDriver _driver;
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ (рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЪреЗрдХ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рддрддреНрд╡ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреГрд╖реНрда рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ)
public class TestMoneyField extends AbstractWebTest { @Test public void testRendering() { WebElement content = _driver.findElementByCssSelector("#FieldMoney .input-text-field"); Assert.assertEquals("0.00", content.getValue()); } @Test public void testInputWithoutDot() { WebElement content = _driver.findElementByCssSelector("#FieldMoney .input-text-field"); content.sendKeys("999999"); Assert.assertEquals("999 999.00", content.getValue()); } }
рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдПрдХ рдЕрд▓рдЧ
рдЪреАрдВрдЯреА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ:
<target name="integrationtest" depends="init, buildtests, deploytests"> <junit haltonfailure="false"> <sysproperty key="test.driver" value="org.openqa.selenium.firefox.FirefoxDriver" /> <classpath> <pathelement location="${path.to.tests.jar}"/> </classpath> <batchtest> <fileset dir="${path.to.compiled.test.classes}"> <include name="**/tests/Test*.class" /> </fileset> </batchtest> </junit> <junit haltonfailure="false"> <sysproperty key="test.driver" value="org.openqa.selenium.ie.InternetExplorerDriver" /> <classpath> <pathelement location="${path.to.tests.jar}"/> </classpath> <batchtest> <fileset dir="${path.to.compiled.test.classes}"> <include name="**/tests/Test*.class" /> </fileset> </batchtest> </junit> </target>
рдпрд╣ рдХрд╛рд░реНрдп рдЙрди рд╕рднреА рдЬреНрдЮрд╛рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдПрдЧрд╛, рдЬрд┐рдирдХреЗ рдирд╛рдо рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ InternetExplorer рдХреЗ рддрд╣рдд рдЯреЗрд╕реНрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдЖрд╢реНрд░рд┐рддреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд▓ рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдореВрд▓ рдЖрд░рдВрдн, рд╕рдВрдХрд▓рди рдФрд░ рдЙрддрд░рд╛рдИ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВред
рдмрди рдЪрд┐рдкреНрд╕
рдХреБрдЫ "рдмреНрд░рд╛рдЙрдЬрд╝рд░" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдУрдкреЗрд░рд╛, рдХреНрд░реЛрдо) рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рджреГрд╢реНрдп рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда рдЙрд╕ рд╕рдордп рдерд╛ рдЬрдм рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ JUnit4 -
TestWatchman рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред
@Ignore abstract public class AbstractWebTest {
рдЪреАрдВрдЯреА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ
<junit haltonfailure="false"> <sysproperty key="test.driver" value="org.openqa.selenium.firefox.FirefoxDriver" /> <sysproperty key="test.screenshotDir" value="${screenshotsDir}" /> <classpath> <pathelement location="${path.to.tests.jar}"/> </classpath> <batchtest> <fileset dir="${path.to.compiled.test.classes}"> <include name="**/tests/Test*.class" /> </fileset> </batchtest> </junit>
рдПрдХреАрдХрд░рдг
рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЪреАрдВрдЯреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг
Jetbrains TeamCity рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред SVN рдореЗрдВ рдХреЛрдб рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд╕рдордЧреНрд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рднреА рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдмрд┐рд▓реНрдб рдХреА "рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп" рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдк рдЯреНрд░рдВрдХ рдХреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рди рдХреЗрд╡рд▓ "рдкрд░реАрдХреНрд╖рдг" рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ "рдмрд╛рдПрдВ" рдХреИрд╕реЗ рд╣реИрдВред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ IE рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрд░реЛрдо рдХреБрдЫ рдПрдХреАрдХрд░рдг рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ (рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреНрд░реЛрдордбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреГрд╖реНрда рдкрд░ рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВ - 2.0b1 рдХреЗ рдЕрдиреБрд╕рд╛рд░, 2.0b2 рдЕрдм рдЙрдкрд▓рдмреНрдз рд╣реИ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ)