如何在量角器

时间:2017-07-05 10:30:39

标签: selenium-webdriver protractor angularjs-e2e e2e-testing

我想在量角器中上传图片文件。问题是我没有点击上传按钮就无法获得"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();

如何关闭文件上传对话框以上传图片?

3 个答案:

答案 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函数中选择了该脚本。