seleniumpython-webbrowser

Python Selenium Safari


I don't understand how this works: If I open a website by hand in for example Safari or Chrome, I can log me on and if I close the browser I automatically log in after reopen the browser. So I once log in in Instagram, the next time I don't have to do it again if I reopen the side.

But if I open it with selenium, it won't work like this. Is there a way to give options in selenium to fix this? I can't open a side without the side thinks iam a robot (what actually is right) but this sucks...


Solution

  • When you quit the webdriver, the cookies, cache, history, etc are deleted. So if you want to be already logged in when you start the webdriver, you have to use the cookies from a profile on the normal browser in which you are already logged in. To do so you have to:

    In this way when you start the webdriver and run driver.get('https://www.instagram.com/') you will be already logged in.

    1. To create a new profile, open your chrome browser, click on the profile icon on top right, then click "Add" and then click "Continue without an account".

    enter image description here

    1. Then write a name for your profile and be sure check the box "Create a desktop shortcut". I suggest you to choose a color so that you will immediately see if it works when selenium open the browser window.

    enter image description here

    1. Open chrome from the new desktop icon (mine is called "PythonSelenium - Chrome.exe") and login to instagram.

      After you logged in, close the browser and open the properties of the new desktop shortcut. Take note of the name of the profile directory, which in my case is "Profile 3".

    enter image description here

    1. Now we have to tell selenium to open the chrome driver using this new profile we've just created, which is logged in twitch. To do this we need the path of the folder where the profile is stored. By default the path is something like C:\Users\your_username\AppData\Local\Google\Chrome\User Data, if you are not sure about it check where chrome is installed in your computer.

    Then run this code (remember to substitute Profile 3 with the name of your profile from step 3)

    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    
    options = webdriver.ChromeOptions()
    options.add_argument("user-data-dir=C:\\Users\\your_username\\AppData\\Local\\Google\\Chrome\\User Data")
    options.add_argument("profile-directory=Profile 3") # <-- substitute Profile 3 with your profile name
    chromedriver_path = '...'
    driver = webdriver.Chrome(options=options, service=Service(chromedriver_path))
    driver.get('http://twitch.tv/login') # it should redirect you to the homepage
    

    And this is the result:

    enter image description here