Reputation: 23
I'm working on a project that will log into the site and will comment the user generated content.
I use selenium, chrome driver and python 3. All credentials user name, password and chromedriver location is configured in a separate config.ini file.
Here's the python script:
#!/usr/bin/python
import os
import time
import getpass
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from configparser import ConfigParser
# Reading configuration file
config = configparser.ConfigParser()
config.sections()
parser = ConfigParser()
parser.read('config.ini')
parameters = {}
for pairs in parser.sections(): # Parse the configuration file
for name, value in parser.items(pairs):
parameters[name] = value
# Automating your browser
chromedriver = parameters["path"]
os.environ["webdriver.chrome.driver"] = chromedriver
#Uncomment this block if you don't want images to load(makes the procss a little bit faster)
'''
chromeOptions = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images":2}
chromeOptions.add_experimental_option("prefs",prefs)
browser = webdriver.Chrome(chromedriver, chrome_options=chromeOptions)
'''
browser = webdriver.Chrome(chromedriver)
browser.set_window_size(1120, 550)
browser.get("http://www.website.com") # website home page
time.sleep(3)
# Logging into website
form = browser.find_element_by_class_name('regular_login')
email = form.find_element_by_name("email")
password = form.find_element_by_name("password")
email.send_keys(parameters["email_id"])
try:
pass_word = parameters["pass_word"]
except:
pass_word = getpass.getpass() # If you want to enter password on terminal
password.send_keys(pass_word)
password.send_keys(Keys.RETURN)
time.sleep(2)
# Fetching answers page of t6he user
answers_url = "https://www.website.com/" + parameters["username"] + "/answers"
browser.get(answers_url)
#commenting answers one by one from top to bottom
counter=0
while True:
try:
elem=browser.find_element_by_xpath("//*[@action_click='enter']")
counter=counter+1
elem.click()
time.sleep(4)
except:
break
print (str(counter) +" answers commented..")
I keep getting,
config = configparser.ConfigParser()
NameError: name 'configparser' is not defined
Please, can anyone answer how can I define the configure.
Upvotes: 2
Views: 10905
Reputation: 87
You Have config = configparser.ConfigParser()
you should have config = ConfigParser()
You do not need to specify configparser because you are importing from it, so you just use the class you are importing which is ConfigParser
.
Upvotes: 0
Reputation: 25400
This error occurs because you haven't actually imported configparser
. You have imported something from configparser
but haven't actually imported configparser
itself.
There are two solutions for this.
1) You can either define it by importing the module. import configparser
2) Or do as you have done 3 lines down from the error and use config = ConfigParser()
If you are using other parts of configparser
then I would recommend to import the whole module and go with option 1. If you're only using ConfigParser
then I would go with option 2.
Upvotes: 7