如何使用protractor来等待一个元素完全淡入
简介: Protractor是一个为AngularJS应用程序开发的端到端测试框架。然而,它也适用于非Angular JS应用程序。它针对与之交互的应用程序运行测试,就像真实用户在真实浏览器中运行一样。在这篇文章中,我们将使用Protractor来检查一个元素是否已经完全淡入。
方法:我们将创建一个基本的测试程序,其中我们将检查元素是否已经完全淡入。所有的Protractor测试都有一个包含配置的文件,这将是启动测试的初始文件。
下面是上述方法的分步实现。
第1步:我们必须首先创建一个conf.js文件,其中包括与Protractor一起使用的配置。
exports.config = {
// Define the capabilities to be passed
// to the webdriver instance
capabilities: {
browserName: "chrome",
},
// Define the framework to be use
framework: "jasmine",
// Define the Spec patterns. This is relative
// to the current working directory when
// protractor is called
specs: ["test.js"],
SELENIUM_PROMISE_MANAGER: false,
// Define the options to be used with Jasmine
jasmineNodeOpts: {
defaultTimeoutInterval: 30000,
},
// Define the baseUrl for the file
baseUrl: "file://" + __dirname + "/",
onPrepare: function () {
browser.resetUrl = "file://";
},
};
第2步:我们将创建名为test.html的HTML文件,其中将包含要测试的元素。
<!DOCTYPE html>
<html>
<head>
<title>
fade-in effect on page load using JavaScript
</title>
<script type="text/javascript">
var opacity = 0;
var intervalID = 0;
window.onload = fadeIn;
function fadeIn() {
setInterval(show, 200);
}
function show() {
var body = document.getElementById("fade-in");
opacity = Number(window.getComputedStyle(body)
.getPropertyValue("opacity"));
if (opacity < 1) {
opacity = opacity + 0.1;
body.style.opacity = opacity
} else {
clearInterval(intervalID);
}
}
</script>
</head>
<body>
<!-- The element to be tested -->
<div id="fade-in" style="opacity: 0;">
Inner text
</div>
</body>
</html>
第3步:我们将创建test.js文件。在这个文件中,我们将访问上述HTML文件,然后去等待元素完全淡出。浏览器是由Protractor创建的一个全局,它用于浏览器级别的命令,比如用browser.get()方法进行导航。describe和它的语法来自Jasmine框架,其中describe是对你的测试的描述,而它定义了测试的步骤。
describe("Protractor Demo App", function () {
it("should have a title", async function () {
// Disable waiting for Angular render update
browser.waitForAngularEnabled(false);
// Get the HTML file that has to be tested
browser.get("test.html");
// Get the fade in element
let fadeIn = element(by.id("fade-in"));
// Wait for the fade in process to complete
await browser.driver.wait(
async function () {
return (await element.getCssValue("opacity")) === "1";
},
30000,
"Taking too long to fade in"
);
expect(hiddenDiv.isDisplayed()).toBe(true);
});
});
第四步:最后,我们将使用下面的命令运行配置文件。这将运行配置文件,测试将如下面的输出所显示的那样运行。
protractor conf.js
输出: