简体   繁体   中英

How to define configparser in python 3

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.

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.

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 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM