@requestly/selenium

    1.3.0 • Public • Published

    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

    Install

    npm i @requestly/selenium

    DownloadsWeekly Downloads

    2

    Version

    1.3.0

    License

    MIT

    Unpacked Size

    5.7 MB

    Total Files

    7

    Last publish

    Collaborators

    • lazyvab
    • sankhachak
    • requestlyio
    • nafees87n