diff --git a/Visual Studio Code Projects/main.py b/Visual Studio Code Projects/main.py new file mode 100644 index 0000000..84ff6a8 --- /dev/null +++ b/Visual Studio Code Projects/main.py @@ -0,0 +1,104 @@ +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 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()