2.1.0 • Published 1 year ago

@savant/chrome v2.1.0

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

@savant/chrome

@savant/chrome is a library for interacting with Chrome browsers in the cloud.

DOM

The DOM is auto pruned to only include the following elements:

  • buttons
  • inputs
  • links

The DOM can be access by calling

const pageDom = browser.page;

An example page DOM looks like this:

{
    url: 'https://www.google.com/',
    links: {
        About: '...',
        Store: '...',
        Gmail: '...',
        Images: '...',
        'Google apps': '...',
        Advertising: '...',
        Business: '...',
        ' How Search works ': '...',
        'Carbon neutral since 2007': '...',
        Privacy: '...',
        Terms: '...'
    },
    buttons: {
      'Search by voice': '<div aria-label="Search by voice" role="button"></div>',
      'Search by image': '<div aria-label="Search by image" role="button"></div>',
      'Google Search': '<input value="Google Search" aria-label="Google Search" name="btnK" role="button" type="submit">',
      "I'm Feeling Lucky": `<input id="gbqfbb" value="I'm Feeling Lucky" aria-label="I'm Feeling Lucky" name="btnI" role="button" type="submit">`,
      Settings: '<div role="button"><div jsname="LgbsSe" class="ayzqOc pHiOh" aria-controls="_SuK8Y_LhD7HY5NoP-dqZ6Aw_1" aria-haspopup="true">Settings</div></div>'
    },
    inputs: {
      Search: '<input name="q" type="text" role="combobox" title="Search" value="" aria-label="Search">'
    },
}

Navigation

To navigate to the page, use the goto method.

await browser.goto("yahoo");

To implicitly wait for a page navigation to happen, use the waitForNavigation method.

  • Timesout after 500ms if no navigation initiates
  • Otherwise waits for the navigation to complete
await browser.waitForNavigation();

All page interactions always automatically wait for a page navigation to happen before continuing. This means that you don't need to call waitForNavigation after every action.

Clicking

To click a button, you can use the click method. This method takes a string as an argument, which is the name of the button or input you want to click. The target element will automatically come into view before clicking.

await browser.click("Search Button");

Typing

To type in a <input> you can use the type method. This method takes two arguments: the name of the input you want to type in, and the text you want to type. The target element will automatically come into view before typing.

await browser.type("Search Input", "puppeteer");

Usage

(async () => {
    const Browser = require("@savant/chrome")("URL", apiKey: "", doLog: true);

    const browser = await Browser.launch({});
    await browser.goto("google");
    await browser.type("input[name='q']", "puppeteer");
    await browser.click("input[name='btnK']");
    await browser.waitForNavigation();
    console.log("Done!");
})();
2.1.0

1 year ago

2.0.3

1 year ago

1.0.4

1 year ago

2.0.0

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago