如何使用protractor来等待一个元素完全淡入

如何使用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

输出:

如何使用protractor来等待一个元素完全淡入?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程