Python从特定行行索引读取CSV单元在variab中传递

2024-03-28 22:31:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python behavior对web应用程序运行自动测试。在

有一个需要用户名和密码的登录页面。在

行为场景有不同的登录要求,例如

Given I am logged on as user1
Then do something

我创建了一个csv文件来保存每次登录的用户名和密码,但是我很难让它只读取我想要的详细信息。在

csv文件是这样的

^{pr2}$

在行为步骤定义中传递所需的用户

 @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)

但这只是用表中的第一个用户登录。在

我不知道如何让它只选择与登录名对应的用户名和密码。在

例如,我将登录名传递为user2,用户名为somename2,密码为password2。在

我也读过其他有关从csv文件中读取的问题,但我找不到一个与此相同的问题。在

我对Python很陌生。在


Tags: 文件csv用户密码onasdrivercontext
2条回答

在执行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]

现在,您可以将此数据用作:

^{pr2}$

我建议最好将登录信息/日志存储在任何数据库系统中。在

相关问题 更多 >