How can I make Selenium/Python wait for the user to login before continuing to run?

前端 未结 2 1356
Happy的楠姐
Happy的楠姐 2020-12-17 21:18

I\'m trying to run a script in Selenium/Python that requires logins at different points before the rest of the script can run. Is there any way for me to tell the script to

相关标签:
2条回答
  • 2020-12-17 21:40
    from selenium import webdriver
    import getpass # < -- IMPORT THIS
    
    def loginUser():
        # Open your browser, and point it to the login page
        someVariable = getpass.getpass("Press Enter after You are done logging in") #< THIS IS THE SECOND PART
        #Here is where you put the rest of the code you want to execute
    

    THEN whenever you want to run the script, you type loginUser() and it does its thing

    this works because getpass.getpass() works exactly like input(), except it doesnt show any characthers ( its for accepting passwords and notshowing it to everyone looking at the screen)

    So what happens is your page loads up. then everything stops, Your user manually logs in, and then goes back to the python CLI and hits enter.

    0 讨论(0)
  • 2020-12-17 21:52

    Use WebDriverWait. For example, this performs a google search and then waits for a certain element to be present before printing the result:

    import contextlib
    import selenium.webdriver as webdriver
    import selenium.webdriver.support.ui as ui
    with contextlib.closing(webdriver.Firefox()) as driver:
        driver.get('http://www.google.com')
        wait = ui.WebDriverWait(driver, 10) # timeout after 10 seconds
        inputElement = driver.find_element_by_name('q')
        inputElement.send_keys('python')
        inputElement.submit()
        results = wait.until(lambda driver: driver.find_elements_by_class_name('g'))
        for result in results:
            print(result.text)
            print('-'*80)
    

    wait.until will either return the result of the lambda function, or a selenium.common.exceptions.TimeoutException if the lambda function continues to return a Falsey value after 10 seconds.

    You can find a little more information on WebDriverWait in the Selenium book.

    0 讨论(0)
提交回复
热议问题