angularjs - 我可以让 Protractor 使用安装在node_modules中的IEDriverServer.exe webdriver-update吗?

标签 angularjs node.js internet-explorer selenium-webdriver protractor

我正在为我的 Angular Web 应用程序项目编写验收测试。它们通过 Protractor 运行,并且在 chrome 上运行得很好。但是,当我尝试在 Internet Explorer 11 上运行它们时,出现错误,提示“驱动程序可执行文件的路径必须由 webdriver.ie.driver 系统属性设置”。但是,我的项目配置为将 IE 驱动程序下载到与 chromedriver 可执行文件相同的位置。

虽然我确信我可以将 IE 驱动程序可执行文件移动到存储在 PATH 环境变量中的文件夹,但项目中的每个开发人员都必须执行相同操作或更新其 PATH 以指向该驱动程序。

我的问题是 - 是否缺少一个简单的配置来使这个 IE 驱动程序像 Chrome 的驱动程序一样可供 Protractor 使用?

我的package.json:

{
//...
"scripts": {
    "webdriver-update": "webdriver-manager update --ie",
    "preacceptance-tests": "npm run webdriver:update -- --standalone",
    "acceptance-tests": "protractor",
    //...
}

我的protractor.conf.js:

exports.config = {
    baseUrl: 'http://localhost:3000/',
    specs: [
        'src/**/**test.ts',
        'src/**/*test.ts'
    ],
    capabilities: {
        'browserName': 'internet explorer' //If I put chrome here, the tests pass
    },
    onPrepare: function() {
        browser.ignoreSynchronization = true;
    },
    seleniumServerJar: "node_modules/protractor/selenium/selenium-server-standalone-2.51.0.jar",
    useAllAngular2AppRoots: true
};

我运行“npm run Acceptance-tests”,并将 chromedriver.exe 和 IEDriverServer.exe 下载到我的 node_modules/protractor/selenium 文件夹中。 Protractor 似乎能够识别 chromedriver,但为什么它看不到 IEDriverServer?

除了手动将我的路径指向此文件夹之外,我似乎无法在任何地方找到答案。如果 Protractor 可以找到 chromedriver,我似乎不必这样做...

最佳答案

据我检查 Selenium 源代码所知,只有一种解决方法。

如果当前工作目录中存在名为 IEDriverServer.exe 的可执行文件(已明确检查该目录,并且您可以使用 process.cwd() 进行查询),则该实例将被选择并绕过 PATH 检查(错误消息有点误导)。

您可以按照Selenium源码here中的逻辑进行操作和 here .

关于angularjs - 我可以让 Protractor 使用安装在node_modules中的IEDriverServer.exe webdriver-update吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709268/

相关文章:

javascript - Angularjs 和 jquery html5Loader

angularjs - Angular + Bootstrap + Datepicker = 不工作

javascript - IE 上没有图像只有带白色 x 的黑框

javascript - Object.map lambda 代码可以在 Chrome、Firefox 中运行,但不能在 IE 中运行?

arrays - 在打印数组之前,如何确保 lineReader 已完成运行并填充数组

php - 为什么这个 js-php 生成的位置引用在 IE8 中不起作用?

javascript - 单击按钮时打开空白窗口

javascript - 简化 Protractor 中的嵌套 promise

node.js - 使用最新的 nodejs 1.10.15 安装 yeoman

node.js - 如何使用 _.each 作为 Node.js 中对象的方法名称?