Table of Contents
Steps required to test an element’s CSS properties using Protractor
Step 1: Set up the protractor
Step 2: Create Conf.js file
Step 3: Create Test Specification
Step 4: Create HTML file containing test elements
Step 5: Run the test
Different ways to test CSS properties using Protractor
Method 1: Use GetCssValue() method
grammar
Example
Method 2: Use GetAttribute() method
Method 3: Use the Browser.executeScript() method
结论
Home Web Front-end CSS Tutorial How to test an element's CSS properties using Protractor?

How to test an element's CSS properties using Protractor?

Aug 27, 2023 am 10:37 AM

如何使用 Protractor 测试元素的 CSS 属性?

Testing CSS properties is critical to ensuring the quality of your web application. CSS properties determine how elements appear on a web page, such as font size, color, and layout. Testing CSS properties can help detect errors and ensure that your application looks and functions as expected. A tool called Protractor provides developers with different ways to test CSS properties.

Protractor is a popular end-to-end testing framework that uses WebDriver to automate interactions between web applications and browsers. It is widely used for testing Angular applications, but can be used for testing other web applications as well.

In this article, we will learn how to test the CSS properties of an element with the help of Protractor. We will learn different ways to perform testing operations.

Steps required to test an element’s CSS properties using Protractor

Using Protractor to test the CSS properties of an element requires the following steps.

Step 1: Set up the protractor

To use Protractor, make sure it is installed on your system along with the required dependencies.

  • Install Protractor -

npm install -g protractor
Copy after login
  • Update binaries -

webdriver-manager update
Copy after login
  • Run the server -

webdriver-manager start
Copy after login

Step 2: Create Conf.js file

The conf.js file in the Protractor project is a configuration file that contains various settings and options for the Protractor test suite. Let's create a file called conf.js

exports.config = {
   seleniumAddress: 'http://localhost:4444/wd/hub',
   specs: ['spec.js'],
   capabilities: {
      browserName: 'chrome'
   },
   onPrepare: function () {
      browser.manage().window().maximize();
   },
   jasmineNodeOpts: {
      showColors: true,
      defaultTimeoutInterval: 30000
   },  
   baseUrl: 'file://' + __dirname + '/',  
   onPrepare: function () {
      browser.resetUrl = 'file://';
   }
};
Copy after login

Step 3: Create Test Specification

After setting up Protractor, create a new test specification file with any name, such as test.js, etc. We can create a new file in the specs directory of the Protractor project.

describe('Test CSS property of an element', () => {
   it('should have the correct color', () => {
      browser.get('https://tutorialspoint.com');
      const element = element(by.css('.test-class));
      expect(element.getCssValue('color')).toEqual('rgba(53, 163, 59, 0.2)');
   });
});
Copy after login

In the above code, we use the class test-class to test the color attribute of the element. We expect the color attribute to evaluate to rgba(53, 163, 59, 0.2).

Step 4: Create HTML file containing test elements

<html>
<head>
   <title>Testing</title>
</head>
<body>
   <!-- Test element -->
   <div class="test-class"
      style="color: rgba(53, 163, 59, 0.2)">
      Inner text
   </div>
</body>
</html>
Copy after login

Step 5: Run the test

To run the test, use the following command in the terminal -

protractor conf.js --suite css-property
Copy after login

In the above command, conf.js is the configuration file of the Protractor project, and --suite css-property specifies that only tests in the css-property suite should be run.

After running the test, you can view the test results in the terminal. If the test passes, you will see a message similar to this -

Test CSS properties of elements

✓ Should have the correct color

1 specification, 0 failures

Different ways to test CSS properties using Protractor

Method 1: Use GetCssValue() method

The first method provided by Protractor is the getCssValue() method, which is used to obtain the calculated value of the CSS property of the element. This method takes the name of a CSS property as a parameter and returns its calculated value. Here is the syntax and examples -

grammar

The following is the syntax for testing CSS properties using Protractor’s getCssValue() method.

const element = element(by.css('.test-class'));
expect(element.getCssValue('color')).toEqual('rgba(53, 163, 59, 0.2)');
Copy after login

Example

In the given example, we use the class test class to test the color attribute of the element. The expected calculated value for the color property is rgba(53, 163, 59, 0.2).

describe('Test CSS property of an element using getCssValue()', () => {
   it('should have the correct color', () => {
      browser.get('https://example.com');
      const element = element(by.css('.test-class'));
      element.getCssValue('color').then(function(value) {
         expect(value).toEqual('rgba(53, 163, 59, 0.2)');
      });
   });
});
Copy after login

Method 2: Use GetAttribute() method

The second way to test the CSS attributes of an element is to use the getAttribute() method to get the value of the element's style attribute. The style attribute contains the inline style applied to the element. Here is the syntax and examples -

grammar

The following is the syntax for testing CSS attributes using Protractor's getAttribute() method.

const element = element(by.css('.test-class'));
expect(element.getAttribute('style')).toContain('color: green;');
Copy after login

Example

In the given example, we are testing whether the style attribute of the element of class test-class contains the CSS property color: green;

describe('Test CSS property of an element using getAttribute()', () => {
   it('should have the correct color', () => {
      browser.get('https://example.com');
      const element = element(by.css('.test-class'));
      element.getAttribute('style').then(function(value) {
         expect(value).toContain('color: green);
      });
   });
});
Copy after login

Method 3: Use the Browser.executeScript() method

The third method that can be used to test CSS properties is the browser.executeScript() method, which executes JavaScript code in the browser context and obtains the calculated value of the CSS property. Here is the syntax and examples -

grammar

The following is the syntax for testing CSS properties using Protractor's browser.executeScript() method.

const element = element(by.css('.test-class'));
const color = browser.executeScript('return window.getComputedStyle(arguments[0]).getPropertyValue("color");', element);
expect(color).toEqual('rgba(53, 163, 59, 0.2)');
Copy after login

Example

In the given example, we execute JavaScript code in the browser context to get the calculated value of the color attribute of the element with the test class class. Here we use the window.getCompulatedStyle() method to get the calculated style of the element, and the getPropertyValue() method to get the value of the color property.

describe('Test CSS property of an element using browser.executeScript()', () => {
   it('should have the correct color', () => {
      browser.get('https://example.com');
      const element = element(by.css('.test-class'));
      browser.executeScript('return window.getComputedStyle(arguments[0]).color;', element).then(function(value) {
         expect(value).toEqual('rgba(53, 163, 59, 0.2)');
      });
   });
});
Copy after login

结论

测试元素的 CSS 属性是确保应用程序具有视觉吸引力和功能性的重要步骤。一个非常重要的工具 Protractor 用于以有效的方式执行此类测试,以测试使用 getCssValue() 和 getAttribute() 方法的元素的 CSS 属性。在本文中,我们了解了进行测试的完整步骤,现在如果您已按照本文中概述的步骤进行操作,则可以轻松设置 Protractor 并创建测试规范来测试元素的 CSS 属性。事实证明,使用 Protractor 测试 Web 应用程序(包括 Angular 应用程序)是可靠且高效的。有了这些知识,我们就可以编写有效的端到端测试,涵盖 Web 应用程序功能的所有方面,包括视觉外观。

The above is the detailed content of How to test an element's CSS properties using Protractor?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Adding Box Shadows to WordPress Blocks and Elements Adding Box Shadows to WordPress Blocks and Elements Mar 09, 2025 pm 12:53 PM

Adding Box Shadows to WordPress Blocks and Elements

Create a JavaScript Contact Form With the Smart Forms Framework Create a JavaScript Contact Form With the Smart Forms Framework Mar 07, 2025 am 11:33 AM

Create a JavaScript Contact Form With the Smart Forms Framework

Create an Inline Text Editor With the contentEditable Attribute Create an Inline Text Editor With the contentEditable Attribute Mar 02, 2025 am 09:03 AM

Create an Inline Text Editor With the contentEditable Attribute

Working With GraphQL Caching Working With GraphQL Caching Mar 19, 2025 am 09:36 AM

Working With GraphQL Caching

Making Your First Custom Svelte Transition Making Your First Custom Svelte Transition Mar 15, 2025 am 11:08 AM

Making Your First Custom Svelte Transition

Comparing the 5 Best PHP Form Builders (And 3 Free Scripts) Comparing the 5 Best PHP Form Builders (And 3 Free Scripts) Mar 04, 2025 am 10:22 AM

Comparing the 5 Best PHP Form Builders (And 3 Free Scripts)

File Upload With Multer in Node.js and Express File Upload With Multer in Node.js and Express Mar 02, 2025 am 09:15 AM

File Upload With Multer in Node.js and Express

Best CSS Animations and Effects on CodeCanyon 2025 (Paid   Free) Best CSS Animations and Effects on CodeCanyon 2025 (Paid Free) Mar 01, 2025 am 09:32 AM

Best CSS Animations and Effects on CodeCanyon 2025 (Paid Free)

See all articles