Search code examples
pythonseleniumpaypalwebautomation

Selenium webdriver stops with no error-message when navigating through paypal login


I'm trying to log into paypal.com and make a payment automatically.

The program successfully loads the login page(https://www.paypal.com/us/signin) and inputs the email, but when I click the next button the web driver unexpectedly closes without generating an error message.

Has anyone encountered this issue before? Could it be because the next button is a disguised captcha, to keep robots from logging in?

I have already tried using time.sleep(3) to give the page time to load. I can't see any other issues with the code.

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys


def paypal_pay(): # pass in user address

    driver = webdriver.Chrome()

    timeout = 20
    paypal = "https://www.paypal.com/us/signin"

    driver.get(paypal)
    email = "emailstuff@gmail.com"
    emailElement = driver.find_element_by_id('email')
    print(emailElement)
    emailElement.send_keys(email)
    time.sleep(3)
    nextElement = driver.find_element_by_id('btnNext').click()


def main():
    paypal_pay()
main()

Solution

  • Your code is working fine but the way that you have implemented is causing the problem, I mean you are using the main() method and what it will do is, once this method gets called and executed, it will close all the connections at end. Hence the reason your browser also getting closed without any error because your code is working fine till there:

    Try the below modified code without main method which works completely fine :

    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome("chromedriver.exe");
    
    paypal = "https://www.paypal.com/us/signin"
    
    driver.get(paypal)
    email = "hello@gmail.com"
    emailElement = driver.find_element_by_id('email')
    print(emailElement)
    emailElement.send_keys(email)
    time.sleep(3)
    nextElement = driver.find_element_by_id('btnNext').click()
    
    print("=> Done...")
    

    For more info on main(), refer this link

    I hope it helps...