Изменить логин портала на основе значения в списке - Python - PullRequest
0 голосов
/ 19 июня 2019

Мне нужна помощь в определении лучшего «питонического» метода для этого и, если возможно, объяснения того, что делается.

Я написал скрипт, который просматривает список и проверяет наш портал, существует ли пользователь. Если это не так, он возвращает значение, которое мне нужно очистить от нашего дБ. Я извлекаю данные из файла CSV, который в настоящее время имеет только один столбец, которые являются именами пользователей, которые я ищу. Я хочу добавить второй столбец, который содержит числовое значение портала, в котором находятся пользователи. Этот список будет упорядочен по восходящей зоне, поэтому сначала будет показан 1, затем в конечном итоге 2 и т. Д.

Каждая «Зона» использует один и тот же URL, но мой логин меняется для каждого. Примером этого является. Хотя пароль для всех одинаков.

Зона 1 - myusername

Зона 2 - myusername2

Зона 3 - myusername3

Зона 99 - myusernameh

Моя конечная цель здесь состоит в том, чтобы, когда мой сценарий распознал, что «зона» изменилась с 1 на 2, он выходит из системы по URL, входит в систему с именем пользователя, связанным с этой зоной, и повторяет процесс, пока не завершит проверку все зоны. Если возможно, мне бы хотелось, чтобы он также распечатывал каждую 1000-ю строку, и таким образом, если по какой-либо причине возникает сбой, я могу перезапустить его, основываясь на последней 1000-й строке, которую он распечатал.

Ниже мой текущий код:

#!/usr/local/bin/python3
# Check User in CP against DB
import getpass
import time
from selenium import webdriver
import base64
import csv
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select as select
import requests

def login():
    driver.get('https://cpadmin.com/Login/') # This never changes
    driver.find_element_by_name('EnteredUserID').send_keys(f'username')#username that can change based on zone
    driver.find_element_by_name('Password').send_keys(cpPassword)
    driver.find_element_by_link_text('Login').click()
    start()


def start():
    for name in usernames:
        driver.get('https://cpadmin.com/Operator/Users/')
        select(driver.find_element_by_name("findOp0")).select_by_visible_text('Equal To')
        driver.find_element_by_name('findValue0').send_keys(name)
        driver.find_element_by_name('search').click()
        elements = driver.find_elements_by_id('Row1Col0')
        if len(elements) == 0:
            print(f'{name}')
        else:
            continue


def end():
    print('Application Complete')
    time.sleep(10)
    driver.close()






with open('/Users/branden/Desktop/test.csv', encoding='utf-8-sig') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    usernames = []
    zones = []


    for row in readCSV:
        username = row[0]
        zone = row[1]

        usernames.append(username)
        zones.append(zone)



driver = webdriver.Chrome()
secret = base64.b64decode(b'secret')#password stays the same for all zones
cpPassword = secret.decode('utf-8')

#Logins for each zone, by numeric digit
# 1 - username
# 2 - username2
# 3 - username3
# 4 - username4
# 5 - username5
# 6 - username6
# 7 - username7
# 99 - usernameh

login()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...