📜  用Protractor在线测验测量角度(1)

📅  最后修改于: 2023-12-03 14:56:18.225000             🧑  作者: Mango

使用Protractor在线测验测量角度

Protractor是一个用于E2E(端到端)测试AngularJS应用程序的浏览器自动化框架。Protractor是基于Selenium的API编写的,因此它基本上是Selenium WebDriver的一个包装器。在本文中,我们将介绍如何使用Protractor在线测验来测量角度。

前提条件

在继续之前,您需要安装以下内容:

  • Node.js
  • Protractor
  • ChromeDriver
测量角度

Protractor提供了测量角度的支持,只要您在代码中定义了一个名为angleMatchers的对象。这个对象包含多个函数,它们分别用于比较角度,以便您可以使用这些函数来测量角度。

var angleMatchers = {
    toBeLessThan: function() {},
    toBeGreaterThan: function() {},
    toBeCloseTo: function() {},
    toBeApproximately: function() {}
};

例如,如果你想测量一个角度是否小于另一个角度,你可以使用toBeLessThan()函数。同样,如果你想测量一个角度是否接近于另一个角度,你可以使用toBeCloseTo()函数。

var angleMatchers = {
    toBeLessThan: function (util, customEqualityTesters) {
        return {
            compare: function (actual, expected) {
                var deg1 = helpers.angleToDegrees(actual),
                    deg2 = helpers.angleToDegrees(expected);

                return {
                    pass: deg1 < deg2,
                    message: `Expected ${deg1} to be less than ${deg2}`
                };
            }
        }
    },
    toBeCloseTo: function (util, customEqualityTesters) {
        return {
            compare: function (actual, expected, precision) {
                var deg1 = helpers.angleToDegrees(actual),
                    deg2 = helpers.angleToDegrees(expected);

                precision = precision || 2;

                return {
                    pass: Math.abs(deg1 - deg2) < Math.pow(10, -precision) / 2,
                    message: `Expected ${deg1} to be close to ${deg2} (precision: ${precision})`
                };
            }
        }
    }
};

如上所述,这些函数将角度转换为度数,并将比较结果转化为一个布尔值。如果角度小于或大于预期角度,它将返回pass: truetobe()匹配器返回的结果转换为true;否则,它将返回pass: false。最后,它将组成带有消息的结果对象,以便您可以将错误消息打印到控制台。

在线测试

Protractor提供了一个在线测试环境来测试您的代码。该测试环境称为Protractor Runner。您可以使用Protractor Runner在浏览器中运行您的测试用例,这是因为Protractor使用了Selenium WebDriver。

要打开Protractor Runner,请打开命令行,并导航至您的项目根目录。在那里,运行以下命令:

protractor --elementExplorer

这将启动Protractor Runner,并打开一个Chrome浏览器窗口。现在,您可以使用Chrome浏览器窗口中的开发工具控制台,以交互方式测试代码。

> var angleA = element(by.id('angle-a'));
> var angleB = element(by.id('angle-b'));

> angleA.getText()
    .then(function (actual) {
        expect(actual).toBeLessThan(90);
        expect(actual).not.toBeGreaterThan(0);

        expect(actual).toBeCloseTo(angleB.getText(), 0);
    });

这里,我们使用by.id()选择器获取id为angle-aangle-b的元素。然后,我们调用getText()方法获取角度文本,并使用我们自己的tobeLessThan()not.toBeGreaterThan()toBeCloseTo()匹配器来检查角度是否符合我们的预期。

结论

在本文中,我们介绍了如何使用Protractor在线测验来测量角度。我们通过定义angleMatchers对象和一些辅助函数来实现这一点。然后,我们使用Protractor Runner在浏览器中交互式地测试我们的代码。