我想在量角器中上传图片文件。问题是我没有点击上传按钮就无法获得"input[type = "file"]"
元素。
当我点击上传按钮时,会打开文件上传对话框弹出窗口。
我试过了
browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
但它不起作用。
这就是我在做的事情:
var image = '../images/image1.png';
var absPathImg = path.resolve(__dirname, image);
element(by.id('uploadImage')).click();
browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
element(by.css('input[type=file]')).sendKeys(absPathImg);
element(by.id('upload')).click();
如何关闭文件上传对话框以上传图片?
答案 0 :(得分:0)
为什么不模拟ESCAPE
按键来模拟进入路径的人并按ENTER
键上传图像,而不是点击ENTER
。
我在我的代码中执行此操作,这非常正常。
var path = require('path')
this.fileUploadOne = element(by.css('locator_to_element'));
var fileUpload = 'path_of_file_to_upload'
absolutePath = path.resolve(__dirname,fileUpload);
console.log(absolutePath);
this.fileUploadOne.sendKeys(absolutePath);
browser.actions().sendKeys(protractor.Key.ENTER).perform();
//just for debugging purposes.
browser.sleep(20000);
答案 1 :(得分:0)
试试这样。我用它作为量角器,但我认为它与Selenium类似。 我还有一个问题,Windows文件对话框没有关闭。 这就是我解决这个问题的方法:
元素(by.css( 'elementForOpenDialog'))的SendKeys(absPathImg)。
将键发送到将打开文件对话框的元素,而不是单击元素打开文件对话框。只需发送到该元素绝对路径,它将上传而不打开对话框。 它对我有用。祝你好运!
答案 2 :(得分:0)
这是一个旧线程,但如果有人遇到此问题,我会回答。
我今天必须解决同样的问题。我能够解决打开上载对话框的问题,因为我非常确定如果没有一些外部库就无法将其关闭,并且在无头模式下将无法工作。
您需要检查与上载按钮的click事件链接的JavaScript,并执行一些脚本,然后再将键发送给文件输入。
这是每种情况的个别情况,但是在我的情况下,我必须这样做(Python):
script = (
"var url = '/Contacting/UploadCsv'; "
"$('#buttonFileUpload').data('url', url);"
)
driver.execute_script(script)
driver.find_element_by_id('buttonFileUpload').send_keys(csv_path)
我从链接到按钮的JS函数中选择了该脚本。