TrueNaijaKing
TrueNaijaKing

Reputation: 69

Wait time between each action

Hello I am new to python and I am trying to create an automation bot (I am very new to python) that logs into instagram and likes a certain number of posts but I am trying to figure out how to add a delay from when it enters the username information and password but I am not sure how to go about that, Also I would appreciate any feedback/recommendations thank you. Here is the code I have so far

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    browser = webdriver.Chrome()
    def site_login():
      browser.get('https://www.instagram.com/')
      browser.find_element_by_name("username").send_keys(‘username’)
      browser.find_element_by_name("password").send_keys(“password”)
      browser.find_element_by_name("Log In").click() #not sure if this works 

Upvotes: 0

Views: 119

Answers (3)

pramod_maddu
pramod_maddu

Reputation: 93

Instead of using time.sleep(seconds) , I would recommend to use Explicit wait as the previous comment. Since due to environment changes time can be vary. So its better to use Explicit wait. Using time.sleep(seconds) will sleeps the current thread. It's a bad practice.

Thanks

Upvotes: 0

user7657046
user7657046

Reputation: 364

The time module should help you

import time

time.sleep(seconds) #Enter the time in seconds here

Upvotes: 1

supputuri
supputuri

Reputation: 14135

If you want to wait for a specified period then you can use time.sleep(timeInSeconds) which need import time.

import time

time.sleep(number_of_seconds)

But, however I would like to use the explicit wait. Unlike hard timeout, this will wait until the condition is met and continue the script.

# needed the imports
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

# wait for the element and click (using xpath locator)
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "xpath_goes_here"))).click()
# wait for the element and enter value (using css locator)
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "css_locator_goes_here")))).send_keys("enter input")
# store the element and then perform action
loginButton = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "css_locator_goes_here"))))
loginButton.click()

you can use either CSS or xpath location strategy.

You can also use implicit wait at the driver level by adding below line of code.

browser.implicitly_wait(10)

Upvotes: 1

Related Questions