我正在尝试自动选择文件进入上传提示。 以下是网站上传部分的代码。
<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
我已经尝试了很多不同的方法来实现它,似乎没有任何工作。此外,在任何地方找不到任何东西来处理这个问题。
答案 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方法。