我在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");
请提出任何建议!!
答案 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。你应该评论一个输入。