无法使用NUnit-Selenium(C#)框架识别搜索框

时间:2017-11-24 04:53:12

标签: c# selenium nunit selenium-chromedriver

我在NUnit测试框架上使用Specflow和Selenium C#,并且正在努力识别以下搜索框并输入搜索文本 -

<td style="padding-top:3px">                            
     <input type="text" name="txtSearch" id="txtSearch" class="smallTextbox" nkeydown="CheckEnterKey(event)">
</td> 
<input type="text" name="txtSearch" id="txtSearch" class="smallTextbox" onkeydown="CheckEnterKey(event)">
</td>*

我的代码如下似乎不起作用 -

var topFrame = driver.FindElement(By.Id("menu"));
topFrame.Click();

var searchBox = driver.FindElement(By.ClassName("smallTextbox"));
searchBox.SendKeys("xyz");

请提出任何建议!!

2 个答案:

答案 0 :(得分:1)

从html可以明显看出,元素的id和classname是相同的: 因此您可以根据需要修改以下代码(是否要单击第一个,第二个或第三个元素)

ReadOnlyCollection allelements = driver.FindElement(By.Id(“ txtSearch”));

        foreach (IWebElement element in allelements)
        {
          //Add logic here whether you want click on first or second or nth element
            element.Click();


        }

答案 1 :(得分:0)

总是更好地使用Id而不是ClassName,因为Id是唯一的,但ClassName可能是多个。

var searchBox = driver.FindElement(By.Id("txtSearch"));
searchBox.Clear();
searchBox.SendKeys("xyz");

还有一个问题,在你的html中我看到两个输入文本具有相同的Id。你应该评论一个输入。