Initial commit
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
import sys
|
||||
|
||||
LOGIN_URL = "https://edgewonk.app/login"
|
||||
DRIVER_PATH = '/Users/talksik/Downloads/chromedriver'
|
||||
|
||||
driver = webdriver.Chrome(executable_path=DRIVER_PATH)
|
||||
wait = WebDriverWait(driver, 10)
|
||||
|
||||
# Login functionality
|
||||
driver.get(LOGIN_URL)
|
||||
MY_EMAIL = '[email protected]'
|
||||
MY_PASSWORD = '@4kLew2!JG!9FK!'
|
||||
email = driver.find_element_by_id('mat-input-0').send_keys(MY_EMAIL)
|
||||
password = driver.find_element_by_id('mat-input-1').send_keys(MY_PASSWORD)
|
||||
driver.find_element_by_xpath('//button').click()
|
||||
|
||||
# select second account - the one I mainly want to mine
|
||||
second_account = wait.until(
|
||||
EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'button[mat-button]'))
|
||||
)
|
||||
second_account[2].click()
|
||||
print('clicked the second account')
|
||||
|
||||
# go through each account to mine each one as a wrapper for loop
|
||||
# in the future
|
||||
# accounts_list = driver.find_elements_by_xpath('//@mat-button')
|
||||
# print(accounts_list)
|
||||
|
||||
# Navigate to the Journal Page
|
||||
journal_nav = wait.until(
|
||||
EC.presence_of_element_located((By.CSS_SELECTOR, "a[href='/journal']"))
|
||||
)
|
||||
journal_nav.click()
|
||||
print('navigating to the trade journal page')
|
||||
|
||||
|
||||
# Mine each trade in each page
|
||||
# mine each page
|
||||
is_last_page = False
|
||||
while not is_last_page:
|
||||
# mine each trade in the current page
|
||||
driver.implicitly_wait(2) # seconds
|
||||
|
||||
trades_on_this_page = wait.until(
|
||||
EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.ag-row[role='row'][row-index]"))
|
||||
)
|
||||
|
||||
# if the next page button is disabled, stop
|
||||
is_last_page = wait.until(
|
||||
EC.presence_of_element_located((By.CSS_SELECTOR, "div[ref='btNext']"))
|
||||
)
|
||||
is_last_page = is_last_page.get_attribute('aria-disabled') == 'true'
|
||||
|
||||
for trade_element in trades_on_this_page:
|
||||
# print all data that I need first
|
||||
row_index = trade_element.get_attribute('row-index')
|
||||
print(row_index)
|
||||
|
||||
grid_cells = trade_element.find_elements_by_css_selector("span")
|
||||
# for grid_cell in grid_cells:
|
||||
# print(grid_cell.text())
|
||||
# dump current trade into csv
|
||||
# click on the trade to get more metadata
|
||||
# dump more data that I need
|
||||
# click on cancel
|
||||
|
||||
# navigate to the next page if not the last_page
|
||||
if not is_last_page:
|
||||
next_page_arrow = driver.find_element_by_css_selector("div[ref='btNext']")
|
||||
next_page_arrow.click()
|
||||
print('going to the next page for more trades')
|
||||
else:
|
||||
print('done...last page')
|
||||
|
||||
|
||||
# print(driver.page_source)
|
||||
|
||||
# original_stdout = sys.stdout # Save a reference to the original standard output
|
||||
|
||||
# # output to file in same directory
|
||||
# with open('output.html', 'w') as f:
|
||||
# sys.stdout = f # Change the standard output to the file we created.
|
||||
# print('This message will be written to a file.')
|
||||
# sys.stdout = original_stdout # Reset the standard output to its original value
|
||||
|
||||
Reference in New Issue
Block a user