使用ruby / Selenium上传文件

我正在写一个脚本,我点击一个按钮(选择照片),打开文件上传(资源管理器)框。 我如何设置我的文件名?

这是我用来点击选择照片按钮(ruby)的代码

driver.find_element(:id, "fileUploadButton").click 

我看过一些post说我不需要点击按钮,而是将路径发送到我要上传的文件/图像。 那么如何在c:\ temp \ mypicture.jpg上传文件?

这是我完整而简单的代码。

 driver.navigate.to "http://blah blah" #the real site is an internal site driver.find_element(:id, "claimGiftButtonDesktop").click sleep 5 driver.find_element(:id, "fileUploadButton").click 

单击fileUploadButton后,就会显示资源管理器窗口。 如果我手动点击打开或双击它,然后显示加载模式,图像显示在网站上。

这是一个有效的IDE录音。 我只是在将此转换为ruby时遇到问题。

 open /PromoSite click id=claimGiftButtonDesktop click id=fileUploadButton type id=fileInputElem #Value C:\\temp\\file.jpg click id=viewProductPreviewButton 

我还添加了一个屏幕截图。 我单击按钮,显示文件上传。 这应该是容易的,所以我不能专注于正确的id。 在此处输入图像描述

由于我没有您的代码,假设我们正在测试https://encodable.com/uploaddemo/

 @driver.navigate.to "https://encodable.com/uploaddemo/" element = @driver.find_element(:css, 'input[type=file]') element.send_keys "/full/path/to/file.jpg" @driver.find_element(:css, 'input[type=button]').click 

因此,您应该将完整路径发送到输入字段并按“提交”按钮

我知道这已经晚了一年但我刚刚开始在Selenium / Ruby中编写一个脚本,我花了一些时间来弄清楚它想要发布我的解决方案(它就像2行一样简单!):

*第一行插入文件路径而不单击浏览按钮,键是使用双反斜杠分隔目录\\

*第二行单击“保存/上传”按钮

 driver.find_element(id: "Document_upload").send_keys("C:\\Users\\me\\Desktop\\my_file.txt") driver.find_element(id: "save").click