从文本文件中读取数据并将数据传递给Login方法

时间:2017-10-21 20:57:55

标签: c# selenium text-files

我是编码的新手,我正在为本地Wordpress设置编写测试自动化框架,我想使用文本文件来存储用户名,密码,xpath等。我有一个我想要处理的类从文本文件中读取数据并将数据传递给登录方法。它看起来像这样:

阅读数据:

public class CSV
{
    public string username;
    public string password;

    public void ReadCsvFile()
    {            

        StreamReader reader = new StreamReader(@"Textfile.txt");


        while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                var values = line.Split(',');                    

                username = values[1];
                password = values[2];

            }


    }
}

我将用户名传递给:

的方法
public void Login()
    {        

        var usernameField = Driver.Instance.FindElement(By.XPath("//input[contains(@id, 'user_login')]"));
        usernameField.SendKeys(username);

当运行登录测试时,我收到一条错误,说“文本不能为空”,我猜这意味着我的变量用户名没有指向任何内容。

2 个答案:

答案 0 :(得分:0)

如果没有IDE并与您一起运行,请检查以下内容。

  1. 我假设你在调用该行时抛出了错误 userNamefield.sendKey。这是对的吗?

  2. 确保By.XPath(“// input [contains(@id,'user_login')]”) 返回一些东西,以便Driver.Instance.FindElement可以运行。

  3. 要验证用户名是否指向任何内容,只需输入断点即可 在该行上,将光标悬停在变量上。 IDE会 告诉你什么是用户名变量。

  4. 让我知道你发现了什么,也许我可以帮忙。

答案 1 :(得分:0)

根据您发布的内容,我猜测问题是您正在从CSV类中阅读usernamepassword,但这些值永远不会传递回主脚本,因此它们可以是传递给您的Login()函数。另一个问题是,您没有将任何值传递到Login()函数中......您应该传递usernamepassword

有几种方法可以处理读取CSV。

  1. 一种方法是一次读取一行,然后将usernamepassword传回该行。这对于较大的文件更好,因为它可以节省内存。

  2. 另一种方法是读取整个文件并返回包含usernamepassword的值集合。