【发布时间】:2013-07-11 18:49:51
【问题描述】:
我有一个网页,其中包含 2 个搜索字段(顶部和底部)以及它们之间的一些文本,我想向底部字段发送查询。两个字段相同(相同的代码)。
我尝试将底部的变量存储在一个变量中并使用该变量发送密钥,但不知何故它总是将文本发送到第一个变量。
var bottomSearch = _WebDriver.FindElements(By.Id("inputBox"))[1];
Assert.IsTrue(bottomSearch.Displayed);
bottomSearch.Clear();
bottomSearch.Click();
bottomSearch.SendKeys("test");
bottomSearch.SendKeys(Keys.Enter);
所以:Clear() 有效并正确删除底部搜索中已经存在的任何文本,Click() 也有效,SendKeys 将文本发送到顶部搜索框,SendKeys(Keys.Enter) 返回底部并按 Enter从那里。 我使用了 firefox 驱动程序,也尝试通过 CssSelectors 或其他标识符选择元素,但没有成功。
非常感谢任何帮助或想法! 谢谢!
这是搜索字段的代码:
<div class="searchbox-input">
<input id="inputBox" class="querybox" type="text" placeholder="Entrer le terme recherché" name="inputBox" value="test">
</div>
【问题讨论】:
-
您是否尝试过在发送密钥之前将焦点设置在底部搜索上?
-
我尝试使用 new Actions(_WebDriver).MoveToElement(_WebDriver.FindElements(By.CssSelector("#inputBox"))[1]).Click().SendKeys("test") 设置焦点。履行();但仍然是同样的问题:正确点击点击,但 sendkeys 将它们发送到第一个搜索框
-
是的,我知道这种不好的做法,我最后的办法是要求开发人员更改底部搜索的 ID,但到目前为止我仍处于“接受挑战”模式。其他人也可能从这次头脑风暴中受益:)