├── README.md └── swagbot.py /README.md: -------------------------------------------------------------------------------- 1 | # swagbot 2 | swagbot, the smart bot that cycles through every video on swagbucks. 3 | -------------------------------------------------------------------------------- /swagbot.py: -------------------------------------------------------------------------------- 1 | import time 2 | import unittest 3 | from selenium import webdriver 4 | from selenium.webdriver.common.keys import Keys 5 | from selenium.webdriver.common.action_chains import * 6 | from selenium.webdriver.chrome.options import Options 7 | 8 | 9 | class PythonOrgSearch(unittest.TestCase): 10 | #Implemented ChromeDriver, firefoxdriver is outdated and now called marionettedriver, also known as GeckoDriver 11 | def setUp(self): 12 | self.driver = webdriver.Chrome(executable_path="C:\\drivers\\chromedriver.exe") 13 | 14 | def test_search(self): 15 | driver = self.driver 16 | driver.implicitly_wait(10000) 17 | accounts = {'': ''} 18 | for emaila, passw in accounts.items(): 19 | driver.get("http://www.swagbucks.com/p/login") 20 | driver.maximize_window() 21 | getemail = driver.find_element_by_name("emailAddress") 22 | getemail.clear() 23 | getemail.send_keys(emaila) 24 | time.sleep(1) 25 | getpassword = driver.find_element_by_name("password") 26 | getpassword.clear() 27 | getpassword.send_keys(passw) 28 | getpassword.send_keys(Keys.RETURN) 29 | driver.get("http://www.swagbucks.com/watch/playlists/111/editors-pick") 30 | while "Swagbucks" in driver.title: 31 | driver.switch_to.window(driver.window_handles[0]) 32 | i = 0 33 | listhead = driver.find_elements_by_xpath(".//*[contains(@id,'sbHomeCard')]") 34 | for head in listhead: 35 | if head != listhead[len(listhead)-1]: 36 | driver.switch_to.window(driver.window_handles[0]) 37 | print(driver.title) 38 | i += 1 39 | print(str(head.text) + '\n' + "_" * 15) 40 | limit = driver.find_element_by_xpath("/html/body/div[3]/div[2]/div[1]/div[1]/main/div[2]/div[1]/section[{}]/span/var".format(i)) 41 | vidcount = int(limit.text) 42 | ActionChains(driver).move_to_element(head).perform() 43 | time.sleep(1) 44 | driver.find_element_by_xpath("/html/body/aside/article[{}]/ul/li[1]/a".format(i)).send_keys(Keys.CONTROL + Keys.ENTER) 45 | ActionChains(driver).key_down(Keys.CONTROL).send_keys(Keys.TAB).key_up(Keys.CONTROL).perform() 46 | driver.switch_to.window(driver.window_handles[1]) 47 | time.sleep(1) 48 | totalchecks = driver.find_elements_by_class_name('iconCheckmark') 49 | if len(totalchecks) != vidcount: 50 | ActionChains(driver).send_keys(Keys.ESCAPE).perform() 51 | driver.find_element_by_id('wayToGo') 52 | driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 'w') 53 | time.sleep(1) 54 | driver.switch_to.window(driver.window_handles[0]) 55 | logo = driver.find_element_by_id("sbLogo") 56 | ActionChains(driver).move_to_element(logo).perform() 57 | time.sleep(1) 58 | else: 59 | driver.switch_to.window(driver.window_handles[0]) 60 | listhead.clear() 61 | menu = driver.find_elements_by_xpath(".//*[contains(@id,'sbMainNavSectionListItemWatchCategory')]") 62 | for category in menu[1::len(menu)-1]: 63 | category.click() 64 | time.sleep(1) 65 | 66 | if __name__ == "__main__": 67 | unittest.main() 68 | --------------------------------------------------------------------------------