Socket
Socket
Sign inDemoInstall

@requestly/selenium

Package Overview
Dependencies
19
Maintainers
3
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @requestly/selenium

Package for using Requestly in Selenium webdriver


Version published
Maintainers
3
Created

Readme

Source

Requestly for Selenium

This is the package for using Requestly in Selenium. Using Requestly you can Modify Headers, Redirect Request Url, Mock API response, Delay/Throttle requests, etc.

Installation

npm install selenium-webdriver @requestly/selenium

Usage

For Chrome

require("chromedriver");
const { Builder } = require("selenium-webdriver");
const chrome = require("selenium-webdriver/chrome");
const { getRequestlyExtension, importRequestlySharedList } = require("@requestly/selenium");

const options = new chrome.Options().addExtensions(
  getRequestlyExtension("chrome")
);

const driver = new Builder()
  .forBrowser("chrome")
  .setChromeOptions(options)
  .build();

// Imports Rules in Selenium using Requestly sharedList feature
importRequestlySharedList(driver, <sharedList_URL>);

chromedriver is an npm wrapper for selenium ChromeDriver.

For Firefox

require("geckodriver");
const { Builder } = require("selenium-webdriver");
const firefox = require("selenium-webdriver/firefox");
const { getRequestlyExtension, importRequestlySharedList } = require("@requestly/selenium");

const options = new firefox.Options().addExtensions(getRequestlyExtension("firefox"));

const driver = new Builder()
    .forBrowser("firefox")
    .setFirefoxOptions(options)
    .build();

// Imports Rules in Selenium using Requestly sharedList feature
importRequestlySharedList(driver, <sharedList_URL>);

geckodriver is an npm wrapper for selenium firefox.

For Edge

require('msedgedriver');
var webdriver = require('selenium-webdriver');
const edge = require("selenium-webdriver/edge");
const { getRequestlyExtension, importRequestlySharedList } = require("@requestly/selenium");

const options = new edge.Options().addExtensions(getRequestlyExtension("MicrosoftEdge"));

var driver = new webdriver.Builder()
  .forBrowser('MicrosoftEdge')
  .setEdgeOptions(options)
  .build();

// Imports Rules in Selenium using Requestly sharedList feature
importRequestlySharedList(driver, <sharedList_URL>);

msedgedriver is an npm wrapper for selenium edge.

Shared List

Users can share Requestly Rules with other users using Shared Lists which is used for importing rules into Selenium webdriver.

Find more information here


Example Snippets

Almost all websites contain content-security-policy and X-Frame-Options header due to which the browser does not the allow the website to open in iframe.

You can try this sharedlist to open websites in iframe: https://app.requestly.io/rules/#sharedList/1628536158787-Open-Websites-in-iframe

Snippet to open linkedin in iframe in selenium

require("chromedriver");
const { Builder } = require("selenium-webdriver");
const chrome = require("selenium-webdriver/chrome");
const {
  getRequestlyExtension,
  importRequestlySharedList,
} = require("@requestly/selenium");

const options = new chrome.Options().addExtensions(
  getRequestlyExtension("chrome")
);

const driver = new Builder()
  .forBrowser("chrome")
  .setChromeOptions(options)
  .build();

// Imports Rule to load linkedin in iframe
importRequestlySharedList(
  driver,
  "https://app.requestly.io/rules/#sharedList/1628536158787-Open-Websites-in-iframe"
);

// Opens a jsbin which loads linkedin in iframe
driver.get("https://jsbin.com/zotofulofu/2/edit?html,output");

Try opening the above jsbin without the importRequestlySharedList step. Did linkedin load in iframe without that step?

Snippet to throttle network using Selenium for Application Testing

In this example, we'll delay network request for https://www.google.com

This SharedList will be used to delay google.com

Let's start by installing the dependencies and importing them into our project

npm install selenium-webdriver @requestly/selenium
require("chromedriver");
const { Builder } = require("selenium-webdriver");
const chrome = require("selenium-webdriver/chrome");
const {
  getRequestlyExtension,
  importRequestlySharedList,
} = require("@requestly/selenium");

Now that we've all the dependencies into our project, let's create a variable to store our shared list link

const sharedListUrl =
  "https://app.requestly.io/rules/#sharedList/1631611216670-delay";

We now have all the components to write our function.

async function delayGoogle() {
  const options = new chrome.Options().addExtensions(
    getRequestlyExtension("chrome") // This installs requestly chrome extension in your testing instance
  );

  const driver = new Builder()
    .forBrowser("chrome")
    .setChromeOptions(options)
    .build();

  await importRequestlySharedList(driver, sharedListUrl); // Here we import the shared list we created some time back
  driver.get("http://www.google.com/");
}

Now, on running the function, we'll experience a network delay for google.com

Find more detailed steps, click here

Keywords

FAQs

Last updated on 30 Jan 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc