Skip to content

Instantly share code, notes, and snippets.

@sqe
Last active April 11, 2016 21:55
Show Gist options
  • Save sqe/397c248a020af75fbc24ac20500aa8ff to your computer and use it in GitHub Desktop.
Save sqe/397c248a020af75fbc24ac20500aa8ff to your computer and use it in GitHub Desktop.
Some Automated tests for Juicero front-end using selenium-webdriver and python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import selenium.webdriver.support.ui as ui
import unittest
test_data = {
"data":{
"bad_data": '''~!@#$%^&*()_+[]\{}|;':",./<>?'''
},
}
_first_name_locator = 'first-name'
_last_name_locator = 'last-name'
_email_locator = 'email'
_phone_number_locator = 'phone'
_password_create_locator = 'password-create'
_password_confirm_locator = 'password-confirm'
_continue_button_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/button'
_first_name_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[1]/ju-text-input/ng-messages/ng-message'
_last_name_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[2]/ju-text-input/ng-messages/ng-message'
_email_error_locator_required = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[3]/ju-text-input/ng-messages/ng-message'
_phone_number_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[4]/ju-text-input/ng-messages/ng-message'
_password_create_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[5]/ju-text-input/ng-messages/ng-message'
_password_confirm_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[6]/ju-text-input/ng-messages/ng-message'
class JuiceroSignUpPageBadData(unittest.TestCase):
def setUp(self):
self.verificationErrors = []
self.driver = webdriver.Chrome()
self.driver.set_window_size(1280, 800)
self.base_url = 'https://www.juicero.com/'
self.get_juicero_button_css = '#menu-menu > li.cta-btn.menu-item'
self.zip_code_box_placeholder_value = 'zip code'
self.zip_input_css = '#zipcode-check'
self.driver.get(self.base_url)
self.driver.find_element_by_css_selector(self.get_juicero_button_css).click()
self.wait = ui.WebDriverWait(self, 30)
self.wait.until(lambda driver: self.driver.find_element_by_css_selector(self.zip_input_css).is_displayed())
self.user_zip = '94131'
self.signup_url = 'https://my.juicero.com/join/?zipcode='
self.driver.find_element_by_css_selector(self.zip_input_css).send_keys(self.user_zip)
entered_zip = self.driver.find_element_by_css_selector(self.zip_input_css).get_attribute('value')
self.driver.find_element_by_name("zipcodeSubmit").click()
self.wait = ui.WebDriverWait(self, 30)
self.wait.until(lambda driver: self.driver.find_element_by_name(_first_name_locator).is_displayed())
def tearDown(self):
self.driver.quit()
def testSignupEmptyFields(self):
self.driver.find_element_by_xpath(_continue_button_locator).click()
first_name_empty = self.driver.find_element_by_xpath(_first_name_error_locator)
assert first_name_empty.text == 'This field is required.'
def testBadFirstName(self):
bad_first_name = self.driver.find_element_by_name(_first_name_locator)
input_bad_first_name = bad_first_name.send_keys(test_data['data']['bad_data'])
assert bad_first_name.get_attribute('value') != test_data['data']['bad_data'], bad_first_name.get_attribute('value')
bad_first_name.clear()
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import selenium.webdriver.support.ui as ui
import unittest
test_data = {
"data1":{
"first_name": 'NameOne',
"last_name": 'LastnameOne',
"email": '[email protected]',
"phonenumber": 4151112222,
"password": 'Somemagic1',
"bad_data": '''~!@#$%^&*()_+[]\{}|;':",./<>?'''
},
"data2":{
"first_name": 'NameTwo',
"last_name": 'LastnameTwo',
"email": '[email protected]',
"phonenumber": 4152223333,
"password": 'Somemagic2'
}
}
_first_name_locator = 'first-name'
_last_name_locator = 'last-name'
_email_locator = 'email'
_phone_number_locator = 'phone'
_password_create_locator = 'password-create'
_password_confirm_locator = 'password-confirm'
_continue_button_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/button'
class JuiceroSignUpPage(unittest.TestCase):
@classmethod
def setUpClass(self):
self.verificationErrors = []
self.driver = webdriver.Chrome()
self.driver.set_window_size(1280, 800)
self.base_url = 'https://www.juicero.com/'
self.get_juicero_button_css = '#menu-menu > li.cta-btn.menu-item'
self.zip_code_box_placeholder_value = 'zip code'
self.zip_input_css = '#zipcode-check'
self.driver.get(self.base_url)
self.driver.find_element_by_css_selector(self.get_juicero_button_css).click()
self.wait = ui.WebDriverWait(self, 30)
self.wait.until(lambda driver: self.driver.find_element_by_css_selector(self.zip_input_css).is_displayed())
self.user_zip = '94131'
self.signup_url = 'https://my.juicero.com/join/?zipcode='
self.driver.find_element_by_css_selector(self.zip_input_css).send_keys(self.user_zip)
entered_zip = self.driver.find_element_by_css_selector(self.zip_input_css).get_attribute('value')
self.driver.find_element_by_name("zipcodeSubmit").click()
self.wait = ui.WebDriverWait(self, 30)
self.wait.until(lambda driver: self.driver.find_element_by_name(_first_name_locator).is_displayed())
@classmethod
def tearDownClass(self):
self.driver.quit()
def testSignupUrl(self):
cur_url = self.driver.current_url
assert cur_url == self.signup_url + self.user_zip
def testSignupFirstName(self):
first_name = self.driver.find_element_by_name(_first_name_locator)
input_first_name = first_name.send_keys(test_data['data1']['first_name'])
assert first_name.get_attribute('value') == test_data['data1']['first_name']
def testSignupLastName(self):
last_name = self.driver.find_element_by_name(_last_name_locator)
input_last_name = last_name.send_keys(test_data['data1']['last_name'])
assert last_name.get_attribute('value') == test_data['data1']['last_name']
def testSignupEmail(self):
email = self.driver.find_element_by_name(_email_locator)
input_email = email.send_keys(test_data['data1']['email'])
assert email.get_attribute('value') == test_data['data1']['email']
def testSignupPhone(self):
phone = self.driver.find_element_by_name(_phone_number_locator)
phone_to_string = str(test_data["data1"]['phonenumber'])
phone_formated = '(' + phone_to_string[0:3] +') ' + phone_to_string[3:6] + '-' + phone_to_string[6:]
input_phone = phone.send_keys(test_data['data1']['phonenumber'])
assert phone.get_attribute('value') == phone_formated
def testSignupCreatePassword(self):
password = self.driver.find_element_by_name(_password_create_locator)
input_password = password.send_keys(test_data['data1']['password'])
assert password.get_attribute('value') == test_data['data1']['password']
def testSignupConfirmPassword(self):
password = self.driver.find_element_by_name(_password_confirm_locator )
input_password = password.send_keys(test_data['data1']['password'])
assert password.get_attribute('value') == test_data['data1']['password']
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import selenium.webdriver.support.ui as ui
import unittest
class JuiceroZipCode(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.set_window_size(1280, 800)
self.base_url = 'https://www.juicero.com/'
self.get_juicero_button_css = '#menu-menu > li.cta-btn.menu-item'
self.zip_code_box_placeholder_value = 'zip code'
self.zip_input_css = '#zipcode-check'
self.driver.get(self.base_url)
self.driver.find_element_by_css_selector(self.get_juicero_button_css).click()
self.wait = ui.WebDriverWait(self, 30)
self.wait.until(lambda driver: self.driver.find_element_by_css_selector(self.zip_input_css).is_displayed())
def tearDown(self):
self.driver.quit()
def test_get_juicero_zip_placeholder_entry(self):
zip_code_box_placeholder_value = 'zip code'
get_zip_placeholder_value = self.driver.find_element_by_css_selector(self.zip_input_css).get_attribute('placeholder')
assert zip_code_box_placeholder_value == get_zip_placeholder_value
def test_get_juicero_zip_normal_entry(self):
user_zip = "94131"
self.driver.find_element_by_css_selector(self.zip_input_css).send_keys(user_zip)
entered_zip = self.driver.find_element_by_css_selector(self.zip_input_css).get_attribute('value')
assert user_zip == entered_zip
def test_zip_code_modal_no_value(self):
zip_error_message = 'Please enter valid zipcode.'
self.driver.find_element_by_name("zipcodeSubmit").click()
empty_zip_entry = self.driver.find_element_by_class_name("zipcode-error-msg").text
assert zip_error_message == empty_zip_entry
@sqe
Copy link
Author

sqe commented Apr 11, 2016

Outputs:

  • image
  • image
  • image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment