namespace Autotests.WebPages.Root { public class Index : PageBase { #region Elements private static readonly WebElement SourceEdit = new WebElement().ById("source"); private static readonly WebElement ResutlText = new WebElement().ById("result_box"); private static readonly WebElement ClearButton = new WebElement().ById("clear"); private static readonly WebElement WebsiteTranslatorLink = new WebElement() .ByAttribute(TagAttributes.Href, Pages.Manager.Websites.Index.BaseUrl.ToString(), exactMatch: false); #endregion public void Open(string from, string to) { Contract.Requires(from != to); var url = new Uri(string.Format("{0}#{1}/{2}/", BaseUrl, from, to)); Navigate(url); } public string SourceText { get { return SourceEdit.Text; } } public string ResultText { get { return ResutlText.Text; } } public string Translate(string text) { SourceEdit.Text = text; if (!string.IsNullOrEmpty(text)) { Contract.Assert(WaitHelper.SpinWait(() => !string.IsNullOrEmpty(ResutlText.Text), TimeSpan.FromSeconds(10))); } return ResultText; } public void Clear() { Contract.Assert(ClearButton.Exists(10)); ClearButton.Click(useJQuery: false); } public void OpenWebsiteTranslator() { WebsiteTranslatorLink.Click(useJQuery: false); } } }
namespace Autotests.WebPages.Root.Manager.Website { public class Index : PageBase { } }
namespace Autotests.Suites { [TestClass] public abstract class SuiteBase { public TestContext TestContext { get; set; } [TestInitialize] public void TestInitialize() { Browser.Start(); } [TestCleanup] public void TestCleanup() { Browser.Quit(); } } }
namespace Autotests.Suites { [TestClass] public class GoogleTranslateTests : SuiteBase { [TestMethod] public void TranslateText() { #region TestData const string languageFrom = "en"; const string languageTo = "ru"; const string textEn = "hello"; const string textRu = ""; #endregion Pages.Index.Open(languageFrom, languageTo); var result = Pages.Index.Translate(textEn); Assert.AreEqual(textRu, result, string.Format("{0} != {1}.", textRu, result)); } [TestMethod] public void CheckJavaScriptEscape() { #region TestData const string languageFrom = "en"; const string languageTo = "en"; const string javascript = "alert(1);"; #endregion Pages.Index.Open(languageFrom, languageTo); var result = Pages.Index.Translate(javascript); Assert.AreEqual(javascript, result, "JavaScript was executed."); } [TestMethod] public void ClearSourceText() { Pages.Index.Open(); Pages.Index.Translate(RandomHelper.RandomString); Pages.Index.Clear(); Assert.IsTrue(string.IsNullOrEmpty(Pages.Index.SourceText), "Source text was not cleared."); } [TestMethod] public void NavigateWebsiteTranslator() { Pages.Index.Open(); Pages.Index.OpenWebsiteTranslator(); Assert.IsTrue(Browser.Url.Contains(Pages.Manager.Websites.Index.BaseUrl), "WebsiteTranslator was not opened."); } } }
Source: https://habr.com/ru/post/181558/
All Articles