Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time, os
- try:
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.support.ui import WebDriverWait
- except:
- print("Selenium is not installed. \nAttempting to install the Selenium module\n\nTo install it manually, type 'pip install selenium' into the cmd prompt")
- time.sleep(5)
- file = open("installSelenium.bat", "w")
- file.write("pip install selenium")
- file.close()
- os.system("installSelenium.bat")
- def click(button):browser.find_element_by_xpath(button).click()
- def waitXPATH(Name):
- element = WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, Name)))
- return element
- def waitCLASS(Name):
- element = WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.CLASSNAME, Name)))
- return element
- def waitID(Name):
- element = WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.ID, Name)))
- return element
- def waitNAME(Name):
- element = WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.NAME, Name)))
- return element
- def slowSend(e, message, t):
- chars = 0
- for char in message:
- chars += 1
- timePer = float(t) / float(chars)
- for char in message:
- e.send_keys(char)
- time.sleep(timePer)
- def work():
- time.sleep(5)
- wordsTable = waitXPATH('/html/body/div[4]/div[2]/div[1]/div/table/tbody[2]')
- wordsList = wordsTable.find_elements_by_class_name('wpwrd')
- wordTotal = waitXPATH('/html/body/div[4]/div[2]/div[1]/div/table/tbody[1]/tr[4]/td[2]')
- total = int(wordTotal.text)*2
- print(total)
- wordList = []
- while len(wordList) < total:
- wordsList = wordsTable.find_elements_by_class_name("wpwrd")
- n = 0
- for wf in wordsList:
- s = wf.text
- s = s.replace("\\[.*?\\]", "")
- s = s.replace("[\n\r]", "")
- s = s.strip()
- if s[0] == ";":
- old = wordList[n-1]
- wordList.remove(old)
- n -= 1
- wordList.append(str(old + s))
- else:
- wordList.append(s)
- n += 1
- wordSet = []
- n = 0
- while n < total / 2:
- wordSet.append(["", ""])
- n += 1
- c, n = (0, 0)
- while c < len(wordSet):
- n = c*2
- while n < (c*2)+2:
- if n % 2 == 0:
- wordSet[c][0] = wordList[n]
- else:
- wordSet[c][1] = wordList[n]
- n += 1
- c += 1
- for word in wordSet:
- print("|" + word[0] + " " + word[1] + "|")
- print("\n" * 2)
- testButton = waitXPATH("/html/body/div[4]/div[2]/div[1]/div/table/tbody[3]/tr[2]/td[2]/button")
- testButton.click()
- time.sleep(10)
- try:click(".//*[@id='launchLearningButton']")
- except:print("No Launch Learning")
- try:click(".//*[@id='inplayAnswersResetModal']/div/div[3]/div[2]/button")
- except:print("No Dismiss button")
- time.sleep(5)
- try:click(".//*[@id='inplaySpecialCharactersModal']/div/div[3]/div[2]/button")
- except:time.sleep(1)
- time.sleep(5)
- w = 1
- while w <= total/2:
- entryBox = waitXPATH(".//*[@id='cardBox']/div/div[contains(@class, 'qaCard active')]/div/div/div[4]/div[1]/div/input")
- translateText = waitXPATH(".//*[@id='cardBox']/div/div[contains(@class, 'qaCard active')]/div/div/div[2]/span")
- text = translateText.text
- print(text)
- for a in (0, 1):
- for aText in wordSet:
- aText[a], b, c = aText[a].partition(';')
- aText[a].strip()
- if aText[0] == text:answer = aText[1]
- elif aText[1] == text:answer = aText[0]
- slowSend(entryBox, answer, 20)
- time.sleep(2)
- click(".//*[@id='cardBox']/div/div[contains(@class, 'qaCard active')]/div/div/div[4]/div[1]/button")
- time.sleep(2)
- click(".//*[@id='cardBox']/div/div[contains(@class, 'qaCard active')]/div/div/div[4]/div[1]/button")
- time.sleep(5)
- w += 1
- time.sleep(2)
- click(".//*[@id='inplayCompleteModal']/div/div[2]/div[2]/button")
- try:
- index = 0
- for line in open("VocabExpressStuff.txt"):
- line = line.replace("\n", "")
- if index == 0:username = line
- elif index == 1:password = line
- elif index == 2:schoolCode = line
- index += 1
- except:
- #First Time Login
- print("Found no previous login attempt")
- username, password, schoolCode = (input("Username: "), input("Password: "), input("School Code:"))
- save = open("VocabExpressStuff.txt", "w")
- save.write(username + "\n" + password + "\n" + schoolCode)
- save.close()
- print("\n\nSaved login details to VocabExpressStuff.txt \nOpen the file to change login details.\n")
- time.sleep(3)
- #Testing for Browsers
- try:
- browser = webdriver.Firefox()
- print("Using the Firefox Webdriver")
- a = True
- except:
- time.sleep(1)
- a = False
- try:
- ass
- browser = webdriver.Chrome()
- print("Using the Chrome Webdriver")
- except:
- if a == False:
- file = open("setupPaths.bat", "w")
- file.write("SET PATH=%~dp0")
- file.close()
- os.system("setupPaths.bat")
- print("The Chrome Webdriver is not installed\nGet it from here: https://sites.google.com/a/chromium.org/chromedriver/downloads\nPlease download it into the same directory as this file")
- input()
- exit()
- browser.get('https://www.vocabexpress.com/login/')
- elem = browser.find_element_by_name('uname')
- elem.send_keys(username)
- elem = browser.find_element_by_name('pwd')
- elem.send_keys(password)
- click('.//*[@id=\'main-body\']/div/div/div[2]/form/footer/div[2]/a[1]')
- time.sleep(1)
- elem = browser.find_element_by_name('ocde')
- elem.send_keys(schoolCode + Keys.RETURN)
- time.sleep(2)
- try:
- click(".//*[@id='exit']")
- except:
- print("No exit session button")
- try:
- click('.//*[@id=\'modal-container\']/div[3]/div[2]/button')
- except:
- print("No login Notification")
- #Click Learn Vocab
- click('.//*[@id=\'mainMenu\']/div/ul/li[2]/a')
- tablex = '//*[@id=\'topiclist\']/div[2]/div[2]'
- allRows = browser.find_elements(By.XPATH, tablex)
- Aindex = 0
- for a in allRows:
- allRows = browser.find_elements(By.XPATH, tablex)
- allTasks = allRows[Aindex].find_elements_by_class_name('bl_row')
- Bindex = 0
- for b in allTasks:
- allRows = browser.find_elements(By.XPATH, tablex)
- allTasks = allRows[Aindex].find_elements_by_class_name('bl_row')
- taskList = allTasks[Bindex].find_elements_by_class_name('bl_sqr')
- Cindex = 0
- for c in taskList:
- allRows = browser.find_elements(By.XPATH, tablex)
- allTasks = allRows[Aindex].find_elements_by_class_name('bl_row')
- taskList = allTasks[Bindex].find_elements_by_class_name('bl_sqr')
- completeAmount = taskList[Cindex].find_elements_by_class_name('bstat_cm')
- if len(completeAmount) >= 1:
- taskList[Cindex].click()
- work()
- browser.get("https://www.vocabexpress.com/learnvocab/")
- Cindex += 1
- Bindex += 1
- Aindex += 1
- browser.quit()
Add Comment
Please, Sign In to add comment