【问题标题】:SendKeys sends text to the wrong field out of two identical onesSendKeys 将文本发送到两个相同字段中的错误字段
【发布时间】: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,但到目前为止我仍处于“接受挑战”模式。其他人也可能从这次头脑风暴中受益:)

标签: c# webdriver sendkeys


【解决方案1】:

好的,经过 2 天的反复试验,我要求网站的开发人员更改底部搜索的 id,现在一切正常。

在所有这些尝试之后,我很想怀疑驱动程序或 SendKeys() 方法中的错误,但由于我没有找到任何引用来备份它并且我之前成功处理过相同的 ID 字段,也许它只是网站实施或我的一些东西。

因此,总而言之,请遵循最佳实践建议,这绝不应该发生 :)

【讨论】:

    猜你喜欢
    • 2015-11-29
    • 2011-10-13
    • 2018-08-21
    • 1970-01-01
    • 2018-05-22
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多