Selenium中SendKeys()和Keydown()之间的差异

本文关键字:之间 SendKeys Selenium Keydown | 更新日期: 2023-09-27 18:29:41

我正在使用Actions类为FireFox Driver进行C#硒自动化测试。

我正在测试自动保存文本区域(单击文本区域以使内容可编辑,并更改任何内容以单击外部的任何位置/单击选项卡以自动保存文本内容)。

最初,我使用以下代码1,它只执行"Control+a"操作,但不执行其余操作:

actions = new Actions(this._driver);
actions.MoveToElement(element);
actions.SendKeys(Keys.Control + 'a').Build().Perform();
actions.SendKeys(Keys.Backspace).Build().Perform();
actions.SendKeys("new input").SendKeys(Keys.Tab).Build().Perform();

然后我把它改成下面的代码2,它起作用了。

actions = new Actions(this._driver);
actions.MoveToElement(element);
actions.KeyDown(Keys.Control).SendKeys("a").KeyUp(Keys.Control).Build().Perform();
actions.SendKeys(Keys.Backspace).Build().Perform();
actions.SendKeys("new input").SendKeys(Keys.Tab).Build().Perform();

这两个代码看起来是一样的,但它们有不同的行为,如果有人能帮助指出它们为什么有不同的表现,我真的很感激?

Selenium中SendKeys()和Keydown()之间的差异

如果使用Actions.Sendkeys方法,则不会释放修饰符键(如ctrl、shift等)。。这就是为什么在第一个代码中,

actions.SendKeys(Keys.Control + 'a').Build().Perform(); /// send ctrl keys & holds it
actions.SendKeys(Keys.Backspace).Build().Perform(); //performs control+backspace which does nothing