ruby - `send_keys` 在 capybara 中做了什么

标签 ruby selenium-webdriver capybara

我有一个问题: capybara 中的 send_keys 做了什么?

我知道:

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 - 在输入字段中通常会选择所有文本然后替换它(平台相关,因为 ctrl vs cmd/meta)。事实上,它上传文件是 selenium 中文件输入方式的副作用,并且不一定跨驱动程序兼容,不应该依赖它来工作,甚至不应该继续在 selenium 中工作。对于上传文件,您应该使用`#attach_file(在执行任何需要进行的 css 更改之后,如果需要,使实际文件输入可见)

关于ruby - `send_keys` 在 capybara 中做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37408660/

相关文章:

ruby-on-rails - 使用 collection_select 并从 sqlite3 收到意外错误 - 有人知道为什么吗?

ruby - 在 ERB 模板中转义换行符/行尾

java - Selenium 测试 Java Maven 依赖关系

ruby-on-rails - Rspec/Capybara 模拟 session ( stub 或模拟?)

javascript - rails/Rspec/ capybara : Interpreting quotes for javascript string for execute script

ruby - 给定多个参数时 File#print 是原子的吗?

ruby-on-rails - Ruby 从类中获取实例方法定义

python-3.x - '[Errno 26] 文本文件忙 : '/home/*****/.wdm/drivers/chromedriver/83.0.4103.39/linux64/chromedriver' '

android - Appium pressKeyCode 生成 IME 操作

ruby-on-rails - capybara 未定义方法 `expect' 用于 capybara :Module