`send_keys` 在水豚中做了什么

what is the `send_keys` did in capybara

我有一个问题:what is the send_keys did in capybara ?

我知道:

element.send_keys :enter 

是打enter

但我发现它也可以让我们在这里上传文件(capybara can not find file input field to attach file)

例如:

element.send_keys("/home/userA/Desktop/chivalry-medieval-warfare.jpg")

将上传chivalry-medieval-warfare.jpg

它怎么做到的?我完全不知道 send_keys.

背后的机制

#send_keys 按照它说的去做——它通过事件将键发送到页面上的元素——element.send_keys([:ctrl, 'a'], 'hello') 会发送 ctrl-a 后跟键 h e l l o——这在输入字段中通常会select 所有文本然后替换它(平台依赖,因为 ctrl vs cmd/meta)。事实上,它上传文件是 selenium 中文件输入方式的副作用,并且不一定跨驱动程序兼容,不应该依赖它来工作,甚至不应该继续在 selenium 中工作。对于上传文件,您应该使用`#attach_file(在执行任何 css 更改后,如果需要,需要使实际文件输入可见)