【问题标题】:How do you programmatically hold down a key in Selenium C#?您如何以编程方式按住 Selenium C# 中的键?
【发布时间】:2019-04-09 06:55:36
【问题描述】:

我一直在寻找这个问题的答案,但所有关于它的话题都已经过时了。

情况是,我在浏览器上有一个 Flash 游戏,我正在尝试使用箭头键以编程方式玩。 我知道如何向按键发送信号,例如:

driver.FindElement(By.Id("myflash")).SendKeys(Keys.ArrowLeft);

但无法真正超越那部分。

【问题讨论】:

  • 您想按住箭头键还是需要一个额外的(“修饰符”)键?在后一种情况下,这可能就是您所需要的stackoverflow.com/questions/37831787/…
  • 如中所示,按住箭头键 5 秒。

标签: c# selenium


【解决方案1】:

你能试试用和弦吗,就像

driver.FindElement(By.Id("myflash")).sendKeys(Keys.chord(Keys.ARROW_LEFT));

【讨论】:

  • 好吧,我在建议之前自己尝试了该解决方案。我不确定为什么它对你不起作用。我突然想到,在尝试将事件用于 ARROW_LEFT 之前,我还在该特定 Web 元素上触发了单击事件。我可以请你也试试吗?例如driver.FindElement(By.Id("myflash")).click(); 然后触发 driver.FindElement(By.Id("myflash")).sendKeys(Keys.chord(Keys.ARROW_LEFT));
【解决方案2】:

尝试使用操作。

试试这个

new Actions(driver).KeyDown(driver.FindElement(By.Id("myflash")), Keys.ArrowLeft).perform();

【讨论】:

  • @S Ahmed 感谢您的回答,我现在学会了如何添加操作,这是我以前不知道的。但是对于您的回答,它给了我一条错误消息:“System.ArgumentException: 'key must be a modifier key (Keys.Shift, Keys.Control, Keys.Alt, Keys.Meta, Keys.Command, Keys.LeftAlt, Keys .LeftControl, Keys.LeftShift) 参数名称:key'"
  • @Senpoo 由于非修饰键在操作中是不可接受的,你应该试试这个解决方案stackoverflow.com/questions/36266151/…
猜你喜欢
  • 1970-01-01
  • 2013-07-19
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多