Created
August 7, 2017 16:54
-
-
Save lYlantis/b3d3ba6275c5a0218d2d7639fef179f6 to your computer and use it in GitHub Desktop.
First attempt at using selenium to automate sending emails to your representatives.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! python3 | |
from selenium import webdriver | |
from selenium.webdriver.common.keys import Keys | |
from selenium.webdriver.support.ui import Select | |
import time, random | |
from datetime import datetime | |
firstName = Bob | |
lastName = Smith | |
city = Anywhere | |
streetAddress = 1450 St | |
zipCode = 10001 | |
email = myemail@email.com | |
phoneNum = '1234567890' | |
subject_and_message = {} | |
subject_and_message['Net Neutrality'] = ('I would like to take the time to contact you regarding net neutrality. I support preserving net neutrality and Title II. ' | |
'I specifically support strong net neutrality backed by Title II oversight of ISPs. This is an issue that could be decisively ' | |
'decided by congress. I urge you to support a solution to keep strong support for net neutrality. ' | |
'\n Sincerely, \n' | |
+ firstName + ' ' + lastName) | |
subject_and_message['Selling Browsing History'] = ('I would like to take the time to contact you regarding the recent vote to allow ISP\'s to sell consumer browsing history. ' | |
'I strongly oppose the moving forward with ISP\'s ability to sell consumer information without their consent. ' | |
'This is a flagrant violation of our privacy. I strongly urge you to oppose any legislation of this type. ' | |
'\n Sincerely, \n' | |
+ firstName + ' ' + lastName) | |
#Pick a random message | |
random.seed(datetime.now()) | |
subject, message = random.choice(list(subject_and_message.items())) | |
#Open Browser | |
browser = webdriver.Firefox() | |
browser.get('https://democracy.io') | |
#Enter address | |
streetElem = browser.find_element_by_id('streetAddress1') | |
streetElem.send_keys(streetAddress) | |
cityElem = browser.find_element_by_id('city1') | |
cityElem.send_keys(city) | |
zipElem = browser.find_element_by_id('zip1') | |
zipElem.send_keys(zipCode) | |
#Hit submit | |
buttonElem = browser.find_element_by_id('submitAddress') | |
buttonElem.click() | |
time.sleep(5) | |
#Select who to send to. (default all) | |
buttonElem = browser.find_element_by_xpath("//button[contains(text(), 'Write to them!')]") | |
buttonElem.click() | |
time.sleep(5) | |
#Enter in a subject | |
subjectElem = browser.find_element_by_id('inputSubject') | |
subjectElem.click() | |
subjectElem.send_keys(subject) | |
#Enter in the message | |
messageElem = browser.find_element_by_id('inputMessage') | |
messageElem.click() | |
messageElem.send_keys(message) | |
#Enter in your email address | |
emailElem = browser.find_element_by_id('inputEmail') | |
emailElem.click() | |
emailElem.send_keys(email) | |
#Enter in your first name | |
firstElem = browser.find_element_by_id('inputFirstName') | |
firstElem.click() | |
firstElem.send_keys(firstName) | |
#Enter in your last name | |
lastElem = browser.find_element_by_id('inputLastName') | |
lastElem.click() | |
lastElem.send_keys(lastName) | |
#Choose Prefix - Mr. | |
prefixElem = browser.find_element_by_id('inputPrefix') | |
prefixElem.click() | |
prefixElem.send_keys(Keys.UP) | |
prefixElem.send_keys(Keys.UP) | |
prefixElem.send_keys(Keys.TAB) | |
#Enter phone number | |
phoneElem = browser.find_element_by_id('inputPhoneNumber') | |
phoneElem.click() | |
phoneElem.send_keys(phoneNum) | |
#Enter Topics - This does not quite work as intended yet | |
for i in browser.find_elements_by_id('inputTopic'): | |
try: | |
select = Select(browser.find_element_by_id('inputTopic')) | |
select.select_by_visible_text('Other') | |
select.send_keys(Keys.TAB) | |
time.sleep(.5) | |
except: | |
try: | |
select = Select(browser.find_element_by_id('inputTopic')) | |
select.select_by_visible_text('Economy') | |
select.send_keys(Keys.TAB) | |
time.sleep(.5) | |
except: | |
topicElem = browser.find_element_by_id('inputTopic') | |
topicElem.send_keys(Keys.TAB) | |
topicElem.send_keys(Keys.TAB) | |
topicElem.send_keys(Keys.TAB) | |
time.sleep(.5) | |
#Hit the send button | |
buttonElem = browser.find_element_by_xpath("//button[contains(text(), 'Send!')]") | |
#Uncomment me to actually send | |
#sendElem.click() | |
print('message sent!') | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment