100-Days-Of-Code/Visual Studio Code Projects/main.py
2024-11-30 08:15:06 +05:30

105 lines
3.5 KiB
Python

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
import time
ACCOUNT_EMAIL = "YOUR LOGIN EMAIL",
ACCOUNT_PASSWORD = "YOUR LOGIN PASSWORD",
PHONE = "YOUR PHONE NUMBER",
def abort_application():
# Click Close Button
close_button = driver.find_element(by=By.CLASS_NAME, value="artdeco-modal__dismiss")
close_button.click()
time.sleep(2)
# Click Discard Button
discard_button = driver.find_elements(by=By.CLASS_NAME, value="artdeco-modal__confirm-dialog-btn")[1]
discard_button.click()
chrome_driver_path = "YOUR CHROME DRIVER PATH"
# Optional - Automatically keep your chromedriver up to date.
from webdriver_manager.chrome import ChromeDriverManager # pip install webdriver-manager
chrome_driver_path = ChromeDriverManager("path=YOUR CHROME DRIVER FOLDER").install()
# Optional - Keep the browser open if the script crashes.
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("detach", True)
service = ChromeService(executable_path=chrome_driver_path)
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get("https://www.linkedin.com/jobs/search/?currentJobId=3586148395&f_LF=f_AL&geoId=101356765&"
"keywords=python&location=London%2C%20England%2C%20United%20Kingdom&refresh=true")
# Click Reject Cookies Button
time.sleep(2)
reject_button = driver.find_element(by=By.CSS_SELECTOR, value='button[action-type="DENY"]')
reject_button.click()
# Click Sign in Button
time.sleep(2)
sign_in_button = driver.find_element(by=By.LINK_TEXT, value="Sign in")
sign_in_button.click()
# Sign in
time.sleep(5)
email_field = driver.find_element(by=By.ID, value="username")
email_field.send_keys(ACCOUNT_EMAIL)
password_field = driver.find_element(by=By.ID, value="password")
password_field.send_keys(ACCOUNT_PASSWORD)
password_field.send_keys(Keys.ENTER)
# CAPTCHA - Solve Puzzle Manually
input("Press Enter when you have solved the Captcha")
# Get Listings
time.sleep(5)
all_listings = driver.find_elements(by=By.CSS_SELECTOR, value=".job-card-container--clickable")
# Apply for Jobs
for listing in all_listings:
print("Opening Listing")
listing.click()
time.sleep(2)
try:
# Click Apply Button
apply_button = driver.find_element(by=By.CSS_SELECTOR, value=".jobs-s-apply button")
apply_button.click()
# Insert Phone Number
# Find an <input> element where the id contains phoneNumber
time.sleep(5)
phone = driver.find_element(by=By.CSS_SELECTOR, value="input[id*=phoneNumber]")
if phone.text == "":
phone.send_keys(PHONE)
# Check the Submit Button
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="footer button")
if submit_button.get_attribute("data-control-name") == "continue_unify":
abort_application()
print("Complex application, skipped.")
continue
else:
# Click Submit Button
print("Submitting job application")
submit_button.click()
time.sleep(2)
# Click Close Button
close_button = driver.find_element(by=By.CLASS_NAME, value="artdeco-modal__dismiss")
close_button.click()
except NoSuchElementException:
abort_application()
print("No application button, skipped.")
continue
time.sleep(5)
driver.quit()