我需要模拟按CTRL + C
,CTRL + V
等等。 Selenium为我们提供了两种方法:
webdriver.Key.chord(var_args)
,例如:
webdriver.Key.chord(webdriver.Key.CONTROL, 'c')
和班级ActionSequence
,例如:
new webdriver.ActionSequence(driver).keyDown(webdriver.Key.CONTROL)
.sendKeys('с')
.keyUp(webdriver.Key.CONTROL);
action.perform();
哪种方式更好用,为什么?
答案 0 :(得分:1)
首先,webdriver.Key.chord
不发送任何事件,只是appends the arguments并在结尾添加NULL。根据代码:
注意:当低级webdriver密钥处理程序看到Keys.NULL时,处于活动状态 修饰键(CTRL / ALT / SHIFT / etc)通过键盘事件释放。
因此,假设您将结果字符串传递给elem.sendKeys()
,您最终会得到:
sendKeys: Ctrl-c
keyUp: Ctrl
相比之下,使用示例中的Actions API,您将得到:
explicit keyDown: Ctrl // *Not* released
sendKeys: c
explicit keyUp: Ctrl // Note original edit had 'keyDown'
哪个应该给完全相同的结果。
我确信webdriver.Key.chord
是表达修改键使用的更自然的方式,没有人需要考虑关键的降低或降低,并且易用性是至关重要的。即使“表现”略有不同,差异也不值得考虑。