npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@requestly/selenium

v1.3.0

Published

Package for using Requestly in Selenium webdriver

Downloads

11

Readme

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