· 5 years ago · May 26, 2020, 05:08 PM
1using System;
2using System.IO;
3using System.Reflection;
4using System.Threading;
5using AutoFixture;
6using NUnit.Framework;
7using OpenQA.Selenium;
8using OpenQA.Selenium.Chrome;
9using OpenQA.Selenium.Interactions;
10using OpenQA.Selenium.Support.UI;
11
12namespace SeleniumAdvancedHomework
13{
14 [TestFixture]
15 public class AutomationpracticeRegistrationNegativeTests
16 {
17 private IWebDriver _driver;
18 private Actions _builder;
19 private WebDriverWait _wait;
20
21 private IJavaScriptExecutor _scroll;
22
23 //some variables are here for easy access in different tests aftewards
24 private IWebElement _registerButton;
25 private IWebElement _firstNameField;
26 private IWebElement _passworField;
27 private IWebElement _zipField;
28 private IWebElement _phoneField;
29
30 [SetUp]
31 public void SetUp()
32 {
33 _driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
34 _driver.Manage().Window.Maximize();
35 _driver.Navigate().GoToUrl("http://automationpractice.com/index.php");
36
37 _wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(10));
38
39 _builder = new Actions(_driver);
40
41
42 var signInButton = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[1]/header/div[2]/div/div/nav/div[1]/a")));
43 signInButton.Click();
44
45 //successful signing:
46 var fixture = new Fixture();
47 var mail = fixture.Create<string>() + "@gmail.com";
48 var emailInput = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/div[1]/form/div/div[2]/input")));
49 emailInput.SendKeys(mail);
50 var createButton = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/div[1]/form/div/div[3]/button/span")));
51 createButton.Click();
52
53 //correct text in account form
54 _firstNameField = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/form/div[1]/div[2]/input")));
55 _firstNameField.SendKeys("Name");
56
57 var lastNameField = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/form/div[1]/div[3]/input")));
58 lastNameField.SendKeys("Surname");
59
60 _passworField = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/form/div[1]/div[5]/input")));
61 _passworField.SendKeys("Password");
62
63 var addressField = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/form/div[2]/p[4]/input")));
64 addressField.SendKeys("Address");
65
66 var cityField = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/form/div[2]/p[6]/input")));
67 cityField.SendKeys("City");
68
69 var stateField = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/form/div[2]/p[7]/div/select")));
70 stateField.Click();
71 _builder
72 .SendKeys(Keys.ArrowDown + Keys.Enter)
73 .Perform();
74
75 _zipField = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/form/div[2]/p[8]/input")));
76 _zipField.SendKeys("10000");
77
78 _scroll = _driver as IJavaScriptExecutor;
79 _scroll.ExecuteScript("window.scrollBy(0,550)");
80
81 _phoneField = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/form/div[2]/p[13]/input")));
82 _phoneField.SendKeys("1000");
83
84 _registerButton = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/form/div[4]/button/span")));
85 }
86
87 [Test]
88 public void AttemptToRegisterWithIncorrectZipCode()
89 {
90 _zipField.Clear();
91 _zipField.SendKeys("1");
92
93 _registerButton.Click();
94
95 var errorMessage = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/ol/li")));
96 string textErrorMessage = errorMessage.Text;
97
98 Assert.AreEqual("The Zip/Postal code you've entered is invalid. It must follow this format: 00000", textErrorMessage);
99 }
100
101 [Test]
102 public void AttemptToRegisterWithoutPhoneNumber()
103 {
104 _phoneField.Clear();
105
106 _registerButton.Click();
107
108 var errorMessage = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/ol/li")));
109 string textErrorMessage = errorMessage.Text;
110
111 Assert.AreEqual("You must register at least one phone number.", textErrorMessage);
112 }
113
114 [Test]
115 public void AttemptToRegisterWithIncorrectPhoneNumber()
116 {
117 _phoneField.Clear();
118 _phoneField.SendKeys("Phone");
119
120 _registerButton.Click();
121
122 var errorMessage = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/ol/li")));
123 string textErrorMessage = errorMessage.Text;
124
125 Assert.AreEqual("phone_mobile is invalid.", textErrorMessage);
126 }
127
128 [Test]
129 public void AttemptToRegisterWithIncorrectFirstName()
130 {
131 _scroll.ExecuteScript("window.scrollBy(900,0)");
132
133 _firstNameField.Clear();
134 _firstNameField.SendKeys("123");
135
136 _scroll.ExecuteScript("window.scrollBy(0,900)");
137
138 _registerButton.Click();
139
140 var errorMessage = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/ol/li")));
141 string textErrorMessage = errorMessage.Text;
142
143 Assert.AreEqual("firstname is invalid.", textErrorMessage);
144 }
145
146 [Test]
147 public void AttemptToRegisterWithIncorrectPassword()
148 {
149 _scroll.ExecuteScript("window.scrollBy(900,0)");
150
151 _passworField.Clear();
152 _passworField.SendKeys("Pass"); //Five characters minimum are required
153
154 _scroll.ExecuteScript("window.scrollBy(0,900)");
155
156 _registerButton.Click();
157
158 var errorMessage = _wait.Until(d => d.FindElement(By.XPath("/html/body/div/div[2]/div/div[3]/div/div/ol/li")));
159 string textErrorMessage = errorMessage.Text;
160
161 Assert.AreEqual("passwd is invalid.", textErrorMessage);
162 }
163
164 [TearDown]
165 public void TearDown()
166 {
167 _driver.Quit();
168 }
169 }
170}