“VerifyTextPresent” возврат неправильного результата для Селена IDE

Brian дает хорошее решение для преобразования его к набору со строгим контролем типов.

большинство данных методов парсинга CSV не принимает во внимание поля выхода или часть другой тонкости файлов CSV (как обрезка полей). Вот код, который я лично использую. Это немного грубо вокруг краев и не имеет в значительной степени никакого сообщения об ошибке.

public static IList> Parse(string content)
{
    IList> records = new List>();

    StringReader stringReader = new StringReader(content);

    bool inQoutedString = false;
    IList record = new List();
    StringBuilder fieldBuilder = new StringBuilder();
    while (stringReader.Peek() != -1)
    {
        char readChar = (char)stringReader.Read();

        if (readChar == '\n' || (readChar == '\r' && stringReader.Peek() == '\n'))
        {
            // If it's a \r\n combo consume the \n part and throw it away.
            if (readChar == '\r')
            {
                stringReader.Read();
            }

            if (inQoutedString)
            {
                if (readChar == '\r')
                {
                    fieldBuilder.Append('\r');
                }
                fieldBuilder.Append('\n');
            }
            else
            {
                record.Add(fieldBuilder.ToString().TrimEnd());
                fieldBuilder = new StringBuilder();

                records.Add(record);
                record = new List();

                inQoutedString = false;
            }
        }
        else if (fieldBuilder.Length == 0 && !inQoutedString)
        {
            if (char.IsWhiteSpace(readChar))
            {
                // Ignore leading whitespace
            }
            else if (readChar == '"')
            {
                inQoutedString = true;
            }
            else if (readChar == ',')
            {
                record.Add(fieldBuilder.ToString().TrimEnd());
                fieldBuilder = new StringBuilder();
            }
            else
            {
                fieldBuilder.Append(readChar);
            }
        }
        else if (readChar == ',')
        {
            if (inQoutedString)
            {
                fieldBuilder.Append(',');
            }
            else
            {
                record.Add(fieldBuilder.ToString().TrimEnd());
                fieldBuilder = new StringBuilder();
            }
        }
        else if (readChar == '"')
        {
            if (inQoutedString)
            {
                if (stringReader.Peek() == '"')
                {
                    stringReader.Read();
                    fieldBuilder.Append('"');
                }
                else
                {
                    inQoutedString = false;
                }
            }
            else
            {
                fieldBuilder.Append(readChar);
            }
        }
        else
        {
            fieldBuilder.Append(readChar);
        }
    }
    record.Add(fieldBuilder.ToString().TrimEnd());
    records.Add(record);

    return records;
}

Примечание, что это не обрабатывает пограничный случай полей, не являющихся deliminated двойными кавычками, но meerley наличие заключенной в кавычки строки в нем. См. это сообщение некоторое время лучшего expanation, а также некоторых ссылок на некоторые надлежащие библиотеки.

8
задан Ripon Al Wasim 24 May 2013 в 12:49
поделиться

2 ответа

Глядя на исходный код, похоже, что вы помещаете искомый текст в неправильное поле. verifyTextPresent (и assert ...) имеет только два параметра, в отличие от verifyText , для которого также требуется цель.

В отличие от verifyText текстовый элемент, который вы ищете следует вводить во второе поле «Цель», а не в «Значение».

, таким образом, код становится

<tr>
<td>verifyTextPresent</td>
<td>XYZ</td>
<td></td></tr>

. Я сделал ту же ошибку при изучении Selenium, поскольку имена полей вводят в заблуждение!

10
ответ дан 5 December 2019 в 15:24
поделиться

Selenium assertions have different modes:

All Selenium Assertions can be used in 3 modes: "assert", "verify", and "waitFor". For example, you can "assertText", "verifyText" and "waitForText". Когда "assert" терпит неудачу, тест прерван. Когда "проверить" не удается, тест будет продолжен выполнение, регистрация ошибки.

Попробуйте assertTextPresent . Это должно немедленно прервать тест.

1
ответ дан 5 December 2019 в 15:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: