Skip to content

Commit ddc59d7

Browse files
committed
Day 50
- Extend Expiry on PythonAnywhere - Inspired code
1 parent b8d010f commit ddc59d7

File tree

3 files changed

+73
-2
lines changed

3 files changed

+73
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
- [Day 47](https://github.com/a092devs/100-days-of-python/tree/master/day047) - Create an Automated Amazon Price Tracker
5656
- [Day 48](https://github.com/a092devs/100-days-of-python/tree/master/day048) - Selenium Webdriver Browser and Game Playing Bot
5757
- [Day 49](https://github.com/a092devs/100-days-of-python/tree/master/day049) - Automating Job Applications on LinkedIn
58+
- [Day 50](https://github.com/a092devs/100-days-of-python/tree/master/day050) - Extend Expiry on PythonAnywhere
5859

5960
## ⚙ Tools and Technologies Covered
6061
- Python 3

day049/main.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@
3535

3636
jobs = driver.find_elements(by=By.CLASS_NAME, value='job-card-list__title')
3737
jobs_available = [job.text for job in jobs]
38-
print(jobs_available)
3938

40-
# Select job posting and click on apply
4139
while jobs_available:
4240
posting_num = 0
4341
try:

day050/main.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import os
2+
import time
3+
from dotenv import load_dotenv
4+
from selenium import webdriver
5+
from selenium.webdriver.common.by import By
6+
from selenium.webdriver.edge.service import Service
7+
from selenium.webdriver.edge.options import Options
8+
9+
class ExtendExpiryBot:
10+
def __init__(self, driver_path, mode='default'):
11+
self.service = Service(driver_path)
12+
self.options = Options()
13+
if mode == 'headless':
14+
self._headless_mode()
15+
elif mode == 'default':
16+
self.options.add_experimental_option('detach', True)
17+
18+
self.driver = webdriver.Edge(
19+
service=self.service, options=self.options
20+
)
21+
self.website_url = 'https://www.pythonanywhere.com/'
22+
23+
def open_website(self):
24+
self.driver.get(self.website_url)
25+
26+
def go_to_login_page(self):
27+
login = self.driver.find_element(By.LINK_TEXT, 'Log in')
28+
login.click()
29+
30+
def sign_in(self, username: str, password: str):
31+
username_input = self.driver.find_element(By.NAME, 'auth-username')
32+
username_input.send_keys(username)
33+
password_input = self.driver.find_element(By.NAME, 'auth-password')
34+
password_input.send_keys(password)
35+
login_btn = self.driver.find_element(By.ID, 'id_next')
36+
login_btn.click()
37+
38+
def go_to_tasks_page(self):
39+
tasks = self.driver.find_element(By.ID, 'id_tasks_link')
40+
tasks.click()
41+
42+
def extend_expiry(self):
43+
extend_expiry_btn = self.driver.find_element(
44+
By.CSS_SELECTOR, 'button.extend_scheduled_task')
45+
extend_expiry_btn.click()
46+
47+
def log_out(self):
48+
logout_btn = self.driver.find_element(By.CSS_SELECTOR, '.logout_link')
49+
logout_btn.click()
50+
51+
def _headless_mode(self):
52+
self.options.add_argument('--headless')
53+
54+
if __name__ == '__main__':
55+
load_dotenv("config.env")
56+
57+
USER = os.environ.get('PA_USER')
58+
PASSWORD = os.environ.get('PA_PASS')
59+
60+
webdriver_path = r'C:\Development\chromedriver\msedgedriver.exe'
61+
expBot = ExtendExpiryBot(webdriver_path)
62+
expBot.open_website()
63+
time.sleep(2)
64+
expBot.go_to_login_page()
65+
time.sleep(1)
66+
expBot.sign_in(USER, PASSWORD)
67+
time.sleep(4)
68+
expBot.go_to_tasks_page()
69+
time.sleep(2)
70+
expBot.extend_expiry()
71+
time.sleep(1)
72+
expBot.log_out()

0 commit comments

Comments
 (0)