/
negative-username.py
112 lines (96 loc) · 4.36 KB
/
negative-username.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import unittest, time, re
import helpers
locators = {
'free_trial' : '#signup > a',
'first_name' : 'first_name',
'last_name' : 'last_name',
'email' : 'email',
'company' : 'company',
'company_size' : 'company-size',
'username' : 'username',
'password' : 'password',
'password_confirm' : 'password_confirm',
'submit_button' : 'submit-button',
'error_container' : 'p.error-text',
}
in_use_username_error = '''Sorry, that username is taken.
Please choose a different username.'''
class Signup(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = 'https://saucelabs.com/'
self.verificationErrors = []
# def test_signup_happy_path(self):
# driver = self.driver
# driver.get(self.base_url)
#
# # Navigate to FREE TRIAL page from home page's header
# driver.find_element_by_css_selector(locators['free_trial']).click()
#
# # First Name and Last Name
# driver.find_element_by_id(locators['first_name']).send_keys('SauceLabs')
# driver.find_element_by_id(locators['last_name']).send_keys('Automation')
#
# # Email value has to be unique!
# unique_date_stamp = helpers.generate_date_stamp()
# email = helpers.generate_email(date_stamp = unique_date_stamp)
# driver.find_element_by_id(locators['email']).send_keys(email)
#
# # Company
# driver.find_element_by_id(locators['company']).send_keys('Foothill CS82A')
#
# # Company Size
# Select(driver.find_element_by_id(locators['company_size'])).select_by_visible_text('11-50')
#
# # Username value has to be unique
# # Use the hhmmss-mmmmmm portion of the unique date stamp generated earlier
# driver.find_element_by_id(locators['username']).send_keys(unique_date_stamp[9:])
#
# # Password values have to match
# driver.find_element_by_id(locators['password']).send_keys('SauceLabs2015')
# driver.find_element_by_id(locators['password_confirm']).send_keys('SauceLabs2015')
#
# # Submit the form
# driver.find_element_by_id(locators['submit_button']).click()
#
# # Verify that the new user has an Account page now
# try: self.assertEqual('Sauce Labs | Account', driver.title)
# except AssertionError as e: self.verificationErrors.append(str(e))
def test_signup_already_used_username_neg(self):
driver = self.driver
driver.get(self.base_url)
# Navigate to FREE TRIAL page from home page's header
driver.find_element_by_css_selector(locators['free_trial']).click()
# First Name and Last Name
driver.find_element_by_id(locators['first_name']).send_keys('SauceLabs')
driver.find_element_by_id(locators['last_name']).send_keys('Automation')
# Email value has to be unique
unique_date_stamp = helpers.generate_date_stamp()
email = helpers.generate_email(date_stamp = unique_date_stamp)
driver.find_element_by_id(locators['email']).send_keys(email)
# Company
driver.find_element_by_id(locators['company']).send_keys('Foothill CS82A')
# Company Size
Select(driver.find_element_by_id(locators['company_size'])).select_by_visible_text('11-50')
# Username value has to be unique
# for a negtive test, use a used username 'jadewu'
driver.find_element_by_id(locators['username']).send_keys('jadewu')
# Password values have to match
driver.find_element_by_id(locators['password']).send_keys('SauceLabs2015')
driver.find_element_by_id(locators['password_confirm']).send_keys('SauceLabs2015')
# Submit the form
driver.find_element_by_id(locators['submit_button']).click()
# Verify that the appropriate error message has been issued
selector = driver.find_element_by_css_selector(locators['error_container'])
try: self.assertEqual(in_use_username_error, selector.text)
except AssertionError as e: self.verificationErrors.append(str(e))
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == '__main__':
unittest.main()