【问题标题】:Testing the validation of a text box using Selenium使用 Selenium 测试文本框的验证
【发布时间】:2011-05-08 12:34:56
【问题描述】:

我正在尝试使用 Selenium 和 NUnit 测试网页。我的一个测试用例需要验证文本框。使用 Selenium 和 C#,我能够检索在文本框中输入的值。但是当文本框验证失败时,文本框旁边会显示错误信息。

所以,这是我的问题: 1.如何测试是否因验证失败而引发错误。 2. 我能得到那个错误的文本吗? 3. 或者,我是不是离题了,我想做的事情根本不可能。

我尝试读取元素的值,但它似乎总是一个空字符串。

比如说,我正在尝试测试网页 https://edit.yahoo.com/registration 。当我在名字字段中输入“**myname&&”时,会出现一条错误消息,指出“只允许使用字母、空格、连字符和撇号”。我希望能够测试是否引发了此错误。

另外,我注意到当 Selenium 打开网页并在文本框中输入错误的值时,错误消息不会显示在此文本框旁边。然而,当我自己打开网页并输入错误的文字时,会显示错误消息

谢谢!!

【问题讨论】:

  • 好的,我想出了一个让它工作的方法。但我不确定这是否是最有效的方法。这是此测试的 C# 代码: [Test] public void TheUntitledTest() { selenium.Open("/registration"); selenium.Focus("名字"); selenium.Type("名字", "*&&");线程.睡眠(1000); selenium.FireEvent("名字", "模糊");我不确定在单元测试中添加“睡眠”是否通常是一个好习惯。谁能提出更好的方法?

标签: selenium selenium-rc selenium-ide


【解决方案1】:

您将不得不使用 thread.sleep,但以更好的方式。最好写一个这样的函数(我是用JAVA写的,你应该可以用C#写)。此方法将等待指定的秒数以使元素可见。如果元素在指定的秒数后仍然不可见,则该方法将返回 false。如果它变得可见,则该方法将返回 true。

或者,您可以使用断言而不是返回错误条件,这样您的测试就会失败。

public boolean waitForErrorMessage(String elementToWaitFor, int waitTimeInSeconds)
{
 int timeOut=0;
 while(!selenium.isVisible(elementToWaitFor))
  { 
    if(timeOut<waitTimeInSeconds){
       #sleep for one second
       Thread.Sleep(1000);
     }
    else {
       return false;
    }
    timeOut=timeOut+1;
  }
  return true;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-18
    • 2013-01-12
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    相关资源
    最近更新 更多