簡體   English   中英

Python-從特定行讀取CSV單元格-行索引在變量中傳遞

[英]Python - Read CSV cell from specific row - row index is passed in variable

我正在使用Python Behave對Web應用程序運行自動化測試。

有一個使用用戶名和密碼的登錄頁面。

“行為”方案具有不同的登錄要求,例如;

Given I am logged on as user1
Then do something

我創建了一個csv文件來保存每次登錄的用戶名和密碼,但是我很難讓它僅讀取所需的詳細信息。

csv文件是這樣的;

 usertype,username,password
 user1,somename1,somepassword1
 user2,somename2,somepassword2

在“行為”步驟定義中傳遞了所需的用戶;

 @given('I am logged on as {login}')

我已經嘗試了以下實現;

def do_login(context, login):
    driver = context.browser

    user_data = csv.DictReader(open('users.csv'))
    for row in user_data:
        row['user'] = login
        uname = row['username']
        pword = row['password']

        driver.find_element_by_name('username').send_keys(uname)
        driver.find_element_by_name('password').send_keys(pword)

但這只是使用表中的第一個用戶登錄。

我不知道如何選擇與登錄名相對應的用戶名和密碼。

因此,例如,我以用戶名2作為登錄名,並且我希望用戶名為somename2,密碼為password2。

我已經閱讀了其他與從csv文件讀取有關的問題,但是找不到與此相同的問題。

我對Python很陌生。

在執行send_keys方法之前,如果用戶類型登錄 匹配, 則應for loop使用if statement進行證明。

def do_login(context, login):
    driver = context.browser

    user_data = csv.DictReader(open('users.csv'))
    for row in user_data:
        row['user'] = login
        uname = row['username']
        pword = row['password']

        # something like this
        if login == row['usertype']:
            driver.find_element_by_name('username').send_keys(uname)
            driver.find_element_by_name('password').send_keys(pword)

我對您的問題不太了解,但是您可以嘗試一下

只需以Dict格式列表讀取csv數據

user_data = csv.DictReader(open('users.csv'))
user_list = [d for d in user_data]

現在您可以按需要使用此數據:

user_list[row_index][column_name]

我建議最好將您的登錄信息/日志存儲在任何數據庫系統中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM