javascript - Protractor 并行运行导致测试失败

标签 javascript protractor

我正在使用 Protractor 进行自动化测试,此时所有测试都可以正常工作。 但是如果我将测试设置为并行运行

添加到配置文件:

shardTestFiles: true,
maxInstances: 4,

测试将开始随机失败,抛出“未找到元素”和/或“预期失败”异常。

有人可以建议导致此问题的原因或解决方法吗?

可能是在开始运行新的浏览器实例并且 Protractor 关注它时测试失败的原因吗? (此时我有大约 20 个规范文件,每个运行的规范文件都会启动新的浏览器实例)

环境:

Windows 7 x64
Protractor v2.1.0
Browser Chrome v46

最佳答案

为了解决我的问题,我创建了一个 elementFinder 和 ElementArrayFinder 对象的包装器,其中包含覆盖的方法和一些额外的等待可见性和/或存在性。

elementFinder.getText() 和 elementFinder.click() 示例

function ElementFinderWrapper() {
    var conditions = protractor.ExpectedConditions;

    /**
    * Returns a wrapper for ElementFinder element.
    * @param {webdriver.Locator} locator
    */
    this.get = function(locator){
        return new Control(element(locator));
    };

    /**
    * Creates a wrapper for ElementFinder element.
    * @param {ElementFinder} element_finder
    * @constructor
    */
    function Control(element_finder) {

        /**
        * Returns the visible innerText of this element.
        * @returns {!webdriver.promise.Promise.<string>}
        */
        this.getText = function () {
            return browser.wait(conditions.presenceOf(element_finder), 3000);
               .then(function () {
                   return browser.wait(conditions.visibilityOf(element_finder), 3000);
               })
               .then(function () {
                   return element_finder.getText();
               });
        };

        /**
        * Clicks on visible element.
        * @returns {!webdriver.promise.Promise.<void>}
        */
        this.click = function () {
            return browser.wait(conditions.presenceOf(element_finder), 3000);
               .then(function () {
                   return browser.wait(conditions.visibilityOf(element_finder), 3000);
               })
               .then(function () {
                   return element_finder.click();
               });
        };
    };
};

然后使用类似的东西:

contol = ElementFinderWrapper.get(by.xpath('some path'));
control.getText();
control.click();

关于javascript - Protractor 并行运行导致测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33564090/

相关文章:

javascript - 可以缩小 iframe 的内容吗?

javascript - Canvas context.fillText 抛出 “An invalid or illegal string was specified”

javascript - Bootstrap 折叠菜单链接在移动设备上不起作用

javascript - 合并图像库和基本场景教程时,aframe 光标不触发

jenkins - 在 Windows Jenkins 从节点上运行 Protractor 时出现问题

javascript - Protractor if, else 不起作用

javascript - 两位数的正则表达式

javascript - 如何计算 Protractor 中下拉选项的总数

javascript - 如何使用 Protractor 测试比较具有 getSize() 函数的元素的宽度和高度?

javascript - Protractor more than one element found for locator By(css selector, .image-holder) - 第一个结果将被使用