【问题标题】:Selenium Webdriver use SendKeys() without overwriting field contentsSelenium Webdriver 使用 SendKeys() 而不覆盖字段内容
【发布时间】:2015-07-22 22:20:04
【问题描述】:

问题:如何使用 SendKeys() 或类似的东西在字段中继续编辑而不删除现有内容。

我在 C# 中使用 Selenium Webdriver。我正在尝试自动化这种类型的对话框(如下所示),您可以在其中一个接一个地进行多项选择。我可以使用driver.[some_selector].SendKeys("Blueberry"); 轻松选择第一个条目

此时焦点在下一个字段。我发送了一个 shift-tab 来让焦点回到这个对话框中,光标紧跟在第一个选择之后。但是每次使用 .SendKeys() 都会替换输入框的内容,所以我永远无法实现多个选择。

作为测试,我也尝试过类似 .SendKeys(firstField+Keys.Enter+secondField) 的方法,但无济于事。

是否使用了 SendKeys() 或替代方法,可以继续在填充的字段中输入但不保留现有内容?还是输入后不离开当前字段?

(如果有兴趣,我相信这是一个有角度的 ui-select2 组件)

【问题讨论】:

  • 不确定您的场景,但如果您的目标是保留您已经输入的内容并想要输入更多内容,您只需 gettext() 存储并附加到下一个 SendKeys() 中。
  • 感谢您的回复,但在这种情况下不起作用。我希望屏幕截图能提供上下文,但您必须输入一些字符,选择一个选项,输入更多字符,选择第二个选项等。例如,我不能一次性选择蓝莓、柠檬、芒果。
  • 示例 html 会有所帮助。你考虑过使用 jQuery 吗?
  • lloyd - 它基本上是一个选择选项对话框,但 select2 是一个角度包装的 jquery 插件 (github.com/angular-ui/ui-select2),因此在这种情况下很难实现“示例 html”。理想的是一个活生生的例子,但我可能无法提供。如果需要,我可以使用 jquery。你有什么想法?理想情况下,我想了解 SendKeys() 或 WebDriver 中的其他内容有什么可能。感谢您的回复。

标签: selenium webdriver


【解决方案1】:

一些示例页面帮助我正确捕捉它,对此感到抱歉。选择第一个元素后,使用 shift-tab 来关注所需元素。之后,如使用 sendkeys 所说,使用定位器?该定位器是新活动元素独有的吗?

使用的是"driver.switchTo().activeElement().sendKeys("selenium");"在java中输入光标闪烁或活动的文本。你在 shift-tab 之后试过这个吗?我之前用这个命令成功了,有些类似于这个问题..

谢谢

【讨论】:

  • 感谢您的建议。到目前为止,这种方法和其他方法(包括尝试使用 Javascript 设置焦点)都没有效果。意思是,元素永远不会获得焦点。如上所述我可以覆盖字段没有问题,但是click()、focus()等不要在字段中设置光标。如果我找到解决方案,我会更新这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2014-10-24
  • 2012-10-15
  • 2023-03-14
  • 2021-11-21
  • 2013-10-10
  • 1970-01-01
相关资源
最近更新 更多