JavaScript - WebDriverIO - 如何选择文件并使用相对文件路径上传?

时间:2014-11-02 02:47:22

标签: javascript selenium meteor webdriver-io

我正在使用CucumberJS为我当前的项目编写测试。测试将使用Selenium Server + WebDriverIO进行测试。现在我一直坚持测试,我必须选择一个图像文件上传到服务器。我正在使用这个WebDriverIO的功能:

chooseFile(String selector, String localFilePath, Function callback)
Given a selector corresponding to an <input type=file>, will upload the local file to the browser machine and fill the form accordingly. It does not submit the form for you.

问题在于,因为我希望测试在每台计算机上都可以运行,所以我将一些测试图像文件预先上传到服务器的root文件夹。因为我不知道这个root文件夹将放在其他计算机中的哪个位置,我认为必须有一种方法可以提交chooseFile函数的相对文件路径。我试过这种方式,但它没有用(这是我在下面提到的uploadImg.coffee文件中的代码)

@Given /^user attemp to upload his first avatar$/, (callback) ->
    @browser
    .click ".change-avatar"
    .chooseFile "input[name=avatarFile]", "/imgForTesting/spiderman.png"
    .click "#saveAvatarButton"
    .call callback
    return

这是我的项目文件夹结构(我使用MeteorJS):

public/ (root)
---imgForTesting/
------spiderman.png
packages/
---test-cucumber/
------features/
---------uploadImg.feature
---------step_definitions/
------------uploadImg.coffee

1 个答案:

答案 0 :(得分:2)

我找到了这个节点命令:process.cwd()http://nodejs.org/api/process.html#process_process_cwd),这将有助于获取当前工作目录的绝对路径。

更多阅读:What's the difference between process.cwd() vs __dirname?