我需要模拟按下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();哪一种方式更适合使用,为什么?
发布于 2016-02-16 22:38:42
首先,webdriver.Key.chord不发送任何事件,它只发送附加参数并在末尾添加一个NULL。根据守则:
注意:当低级webdriver处理程序看到Keys.NULL时,活动修饰符键(CTRL/ALT/SHIFT/etc)通过keyup事件发布。
因此,假设将结果字符串传递给elem.sendKeys(),您将得到以下结果:
sendKeys: Ctrl-c
keyUp: Ctrl相反,在示例中使用Actions,您将得到:
explicit keyDown: Ctrl // *Not* released
sendKeys: c
explicit keyUp: Ctrl // Note original edit had 'keyDown'这应该给提供完全相同的结果。
我确信,webdriver.Key.chord是一种更自然的方式来表达修饰符键的使用,而不需要考虑键的下降或上升,而且易用性是最重要的。即使“性能”略有不同,这种差异也不值得考虑。
https://stackoverflow.com/questions/35438500
复制相似问题