当提示出现使用带有Ruby的

时间:2015-11-17 22:16:59

标签: ruby selenium selenium-webdriver

我正在尝试自动选择文件进入上传提示。 以下是网站上传部分的代码。

<input name="__RequestVerificationToken" value="rAyNscZYeYLEYTV1rodwr0lQr_0Eadpfd11lcuHUvJf83lM57R2vruocFLDPjK0axYr_XBYgqmgTXVH_V2qHGFpAq-zGx_mMm72XIUj4Z6HlUjcyz47Vepfjysur7CR0N8xgHMkjW1KRgb4K6w6VPQ2" type="hidden">
<li>
  <input id="imageUpload" class="hideupload" name="imageUpload" multiple="" type="file">
  <a id="imageUploadLink" href="#"><i class="addContent_icon uploadlink"><img src="/Content/images/addContent-icon-images.png"></i>Upload Images</a>
</li>

据我所知,感兴趣的元素是id:imageUploadLink。单击该按钮将打开选择文件的提示。这是我的代码。

require "selenium-webdriver"
browser = Selenium::WebDriver.for :firefox
sign_in(browser, myUsername, myPassword) #signs into testing site
browser.find_element(:id, 'imageUploadLink').click
element = browser.find_element(:id, 'imageUploadLink')
element.send_keys "/Users/DanielScarlett/Desktop/Example.JPG"

send_keys似乎是在一种快速消失的查找部分中输入到浏览器的底部:http://imgur.com/a/7iXcW

我已经尝试了很多不同的方法来实现它,似乎没有任何工作。此外,在任何地方找不到任何东西来处理这个问题。

2 个答案:

答案 0 :(得分:0)

我假设您要通过浏览选择文件,然后点击Upload Images链接。如果是这种情况,您感兴趣的ID为imageUpload。 代码是Java,你可以改为ruby。

它对我有用:

driver.findElement(By.id("imageUpload")).sendKeys("absolutepathtoimage\\testImage.jpg");

在按钮上查看不使用 click()的使用情况。它会触发操作系统级模式对话框,其中selenium无法自动执行。 我是从@talktokets给出的How to upload file using Selenium WebDriver in Java回答中提到的。

答案 1 :(得分:0)

使用Selenium上传文件时,您希望将文件路径添加到表单(例如,id:'imageUpload'),然后提交表单。您希望避免触发系统级对话框,因为Selenium无法处理此问题。

对于Ruby,它看起来像这样:

file_upload = driver.find_element(id: 'imageUpload')
file_upload.send_keys('path/to/your/file')
file_upload.submit

您可以看到完整的文章,逐步完成此here

如果您希望在远程节点(例如Selenium Grid或第三方Sauce Labs)上运行测试,那么您需要查看file_detector方法。