| 1 |
from selenium import webdriver |
| 2 |
from selenium.webdriver.common.keys import Keys |
| 3 |
from selenium.webdriver.common.by import By |
| 4 |
from selenium.webdriver.support.ui import WebDriverWait |
| 5 |
from selenium.webdriver.support import expected_conditions as EC |
| 6 |
from time import time, sleep |
| 7 |
import json, os |
| 8 |
|
| 9 |
def answer_question(driver): |
| 10 |
# Output |
| 11 |
Output = {} |
| 12 |
|
| 13 |
# Start |
| 14 |
BtnStart = WebDriverWait(driver, 30).until( |
| 15 |
EC.presence_of_element_located((By.XPATH, "//a[@class='kie']")) |
| 16 |
) |
| 17 |
driver.execute_script("arguments[0].click();", BtnStart) |
| 18 |
|
| 19 |
# Wait Question |
| 20 |
sleep(5) |
| 21 |
|
| 22 |
# Question |
| 23 |
Question = WebDriverWait(driver, 30).until( |
| 24 |
EC.presence_of_element_located((By.CLASS_NAME, "size-24")) |
| 25 |
) |
| 26 |
print(" * Question:", Question.text) |
| 27 |
Output["Question"] = Question.text |
| 28 |
|
| 29 |
# Wait AnswerColumn |
| 30 |
sleep(5) |
| 31 |
|
| 32 |
# Column |
| 33 |
AnswerColumn = driver.find_elements_by_name("jwb[]") |
| 34 |
print(" * Total Column:", len(AnswerColumn)) |
| 35 |
for Column in AnswerColumn: |
| 36 |
Value = Column.get_property("value") |
| 37 |
if not Value: |
| 38 |
Column.clear() |
| 39 |
Column.send_keys("#") |
| 40 |
|
| 41 |
# Press Yes |
| 42 |
BtnOK = driver.find_element_by_id("cmdOk") |
| 43 |
driver.execute_script("arguments[0].click();", BtnOK) |
| 44 |
BtnLock = driver.find_element_by_id("cmdKunci") |
| 45 |
driver.execute_script("arguments[0].click();", BtnLock) |
| 46 |
BtnYes = driver.find_element_by_id("cmdJawabanBenar") |
| 47 |
driver.execute_script("arguments[0].click();", BtnYes) |
| 48 |
|
| 49 |
# Wait for Answer |
| 50 |
sleep(10) |
| 51 |
|
| 52 |
# Column |
| 53 |
RealAnswer = driver.find_elements_by_name("jawabanbenar") |
| 54 |
Answer = [] |
| 55 |
for Column in RealAnswer: |
| 56 |
Value = Column.get_property("value") |
| 57 |
Answer.append(Value) |
| 58 |
print(" * Answer:", Answer) |
| 59 |
Output["Answer"] = Answer |
| 60 |
|
| 61 |
# Accept |
| 62 |
driver.execute_script("terima();") |
| 63 |
# Sleep |
| 64 |
sleep(5) |
| 65 |
# Return |
| 66 |
return Output |
| 67 |
|
| 68 |
def run(): |
| 69 |
# Data |
| 70 |
Data = [] |
| 71 |
try: |
| 72 |
# Init |
| 73 |
driver = webdriver.Firefox() |
| 74 |
driver.get("https://www.teka-teki-sulit.dwicandra.xyz/") |
| 75 |
driver.execute_script("mode_biasa('user');") |
| 76 |
|
| 77 |
# Answer |
| 78 |
for I in range(1, 33): |
| 79 |
print(" * Question Number:", I) |
| 80 |
Answer = answer_question(driver) |
| 81 |
if Answer: |
| 82 |
Data.append(Answer) |
| 83 |
print("") |
| 84 |
|
| 85 |
except Exception as e: |
| 86 |
raise e |
| 87 |
|
| 88 |
finally: |
| 89 |
# Dump |
| 90 |
Filename = str(int(time())) + '.txt' |
| 91 |
with open(Filename, 'w') as outfile: |
| 92 |
json.dump(Data, outfile) |
| 93 |
|
| 94 |
# Quit |
| 95 |
driver.quit() |
| 96 |
|
| 97 |
# Run! |
| 98 |
run() |
To add a comment, please login or register first.
Register or Login