[英]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.