0

I am stuck in a project in which I am trying to upload file to a website. This is www.coursehero.com.

Actually I am trying to make a script to upload the document automatically on the website I mentioned, it is an educational website.

Further the website may show captcha sometimes, but if you load the cookies by adding your data directory then it will not usually asks to solve captcha. You may need to login manually first time in selenium browser by extending time limit.

Here is the direct link of the uploading page. https://www.coursehero.com/upload/?__chid=61cbbae8-cd73-4877-b30d-7826dfd0833e

You can use the following id and pwd to login:

[email protected]
izaan100

Here is my code:

import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
import time
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.proxy import Proxy, ProxyType
import csv
import pandas as pd
import sys
import random
import os
#import autoit


options = Options()
#options.add_argument('--proxy-server=%s' % Ip)
options.add_argument('--user-agent={Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36}')
options.add_argument("user-data-dir=C:\\Users\\name\\AppData\\Local\\Google\\Chrome\\User Data\\selenium1")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--remote-debugging-port=9222")
options.add_argument('--no-sandbox')
options.add_argument("--disable-extensions")
options.add_argument("--disable-gpu")
options.add_argument("disable-infobars")
path=r'C:\Users\name\Downloads\chromedriver.exe'
driver = webdriver.Chrome(path, options=options)
driver.get('https://www.coursehero.com/login/?ref=login') 
time.sleep(6)






try:
    driver.find_element_by_xpath('//*[@id="email-address-field"]').send_keys('[email protected]')
    driver.find_element_by_xpath('//*[@id="password-field"]').send_keys('izaan100')
    driver.find_element_by_xpath('//*[@id="login-submit-field"]').click()
    time.sleep(8)
except:
    pass



driver.get('https://www.coursehero.com/upload/?__chid=61cbbae8-cd73-4877-b30d-7826dfd0833e')
time.sleep(12)

upload=driver.find_element_by_xpath('//*[@id="noFrictionUploaderApp"]/div/div/div[2]/div/div/div/div/div/div/div/div/div[2]/div/span/button/span')
upload.send_keys('C:\\Users\\name\\Desktop\\files\\Example.docx')
time.sleep(10)

What I want is to upload the file, but I am getting the error:

Error: Element not found

The code is not working, I tried other stuff like:

upload.send_keys(r'C:\Users\name\Desktop\files\Example.docx')

but not worked, I searched on google and stack but this is the only way I found to upload file in selenium python.

Can anyone guide me and help me?

4
  • Check this post: stackoverflow.com/questions/8665072/… Commented Jun 29, 2021 at 21:53
  • 1
    Does this answer your question? How to upload file ( picture ) with selenium, python Commented Jun 29, 2021 at 22:04
  • @DeadSec I already checked it before asking the question here, I need code in selenium not in pyautogui, further I also tried autoit library but did not work. Commented Jun 29, 2021 at 22:12
  • I have checked both of the above solutions. did not work for me. Commented Jun 29, 2021 at 22:16

2 Answers 2

1

You need to find the input tag then sendkeys, you're putting the link_to_file to span tag.

You could try this xpath //input[@type='file']

enter image description here

Sign up to request clarification or add additional context in comments.

Comments

0

I haven't run your code yet, but I notice on the website you have to actually click the button to open the file dialogue, which you do not do. Have you tried including the .click() selenium command after you select the xpath?

2 Comments

I already did it but after opening dialogue box how can I automate dialogue box?
I automated it with pyautogui but I do not need code in pyautogui, I need to do it in selenium.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.