Skip to content

Releases: feder-cr/invisible_selenium

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 10 Oct 03:05
8e9507b

Fixed

  • Pointer actions answer once the page has handled the event. With the
    firefox-39 engine, a press, a move or a release returns after the page's
    listeners have run. Before, the next call could reach the page first: under
    load a short drag-and-drop lost its drop, and a script read right after a
    double click could count one click short.

Changed

  • A click that opens alert() is handled by the engine. The engine ends
    its own wait when a dialog opens, so this package no longer carries a hook
    for it.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 14:58
bccc8ca

Changed

  • The Juggler client comes from invisible-core (38.34.0,
    invisible_core.juggler), the one copy every invisible_ wrapper shares.
    This package carried its own, taken from invisible-playwright on
    2026-09-24, and it now has the fixes made there since:
    • typing into a field waits the moment a person takes after focusing it,
      and longer while the field is still changing, so a page that writes into
      the field when it gets the focus no longer overwrites what is typed;
    • a picked file reaches the input after the hesitation a person takes to
      choose it;
    • an action that needs no point on the screen (setting the files of a
      hidden <input type=file> behind a styled button, focusing or
      dispatching an event on a hidden element) no longer waits for the element
      to become visible until it times out;
    • every page of a session numbers its own clicks, fields and typed strings,
      so two tabs never draw the same movement.
  • A preference value that is not a bool, an int, a float or a string is
    refused
    with a TypeError naming it, instead of being written as its
    text.
  • The license is MIT only. The two files taken from Playwright's driver
    (Apache-2.0) moved to invisible-core with the client.

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 09 Oct 09:34
f2c1e1c

Changed

  • The window a page reads is the one Windows Firefox draws. Through
    invisible-core 38.33.0 and the firefox-38 engine. A maximized window
    answers screenX -8 and an outerWidth 16 wider than screen.availWidth
    at 100%, as Windows Firefox does, where it answered 0 and the work area; its
    content starts where retail's does at every display scale; a popup answers
    its own size, frame and position, and one opened without a position is
    placed where Windows Firefox places it.

Removed

  • The pins screen.chrome_w, screen.chrome_h, screen.window_x and
    screen.window_y.
    The window follows screen.dpr, which takes 1, 1.25,
    1.5 or 2.

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 00:02
5f46fe5

Changed

  • The screen a page reads is in CSS pixels. Through invisible-core
    37.33.0 and the firefox-37 engine. A 1920x1080 panel at 125% reports
    screen.width 1536 and screen.height 864, as Firefox on that monitor
    does. Before, it reported the panel's device pixels. The default
    viewport is derived the same way.

Fixed

  • On Linux the virtual display keeps X access control on. The Xvfb
    display opened for a headed session without a screen used to run with
    access control off (-ac), so any local process could connect to it and
    read or drive the browser window. It now gets a private session cookie,
    handed only to the browser, and removed when the session stops.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 05:54
3907035

Changed

  • The language of locale="auto" is the real Firefox of the egress
    country, by share.
    Through invisible-core 36.33.0 (the required version
    is exact, as before). A country used to map to one country tag (de-DE)
    that no Firefox build has, so a German egress sent de-DE,de;q=0.9,...
    where a German Firefox sends de,en-US;q=0.9,en;q=0.8, and every session
    of a country spoke the same language. Now each country carries the Firefox
    builds people there run and their share, from Mozilla's Firefox Public
    Data Report (Belgium: French 40%, Dutch 31%, US English 22%), and the egress
    IP picks one: the same address always gets the same language, and the
    addresses of a country spread over its builds as measured.
  • An explicit locale is navigator.language. locale="en-AU" reports
    en-AU, en-US, en (it reported en-US, en), and "fr-FR" reports
    fr-FR, fr, en-US, en (it reported fr first): the requested tag goes
    first and Firefox's own table gives the tail.

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 05 Oct 17:12
601dc96

invisible-selenium 0.1.3 is on PyPI.

Artifacts and checksums: https://pypi.org/project/invisible-selenium/0.1.3/

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 03 Oct 03:45
3ea3f5a

Changed

  • Values a user picks are committed by Firefox itself. Select, a click
    on an <option>, send_keys on a file input and clear() on a date or time
    field hand the choice to the engine's native input commands
    (Page.selectOptions, Page.setUserInput, Page.setFileInputFiles), which
    take the same paths as the dropdown, the date box and the file picker. The
    page gets input and change with the shape a user's pick gives, inside
    shadow roots too, and nothing when the choice did not change. The command
    this used to call, Page.dispatchTrustedInputEvents, is gone from the
    engine, so this needs the engine that ships the new commands and lands with
    the core pin that seals it.

Fixed

  • A click lands where it was asked on a page with a saved zoom, and on
    Linux behind a SOCKS proxy real sites see WebRTC working: both are fixes in
    the firefox-35 engine.

Requires

  • invisible-core 35.32.0, which seals the firefox-35 engine. This version
    does not run on firefox-34, and earlier versions do not run on firefox-35.

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 02 Oct 19:24
a1d2fe4

Fixed

  • clear() leaves the field, and change comes from Firefox, once. It
    deleted the text and then asked the engine for a change while the field
    still had focus: cancelable and composed, followed by Firefox's own at the
    next blur, and sent even to a contenteditable, which never fires one. Inside
    a shadow root that request failed and clear() raised after emptying the
    field. It now runs Selenium's unfocusing step after the Delete, so change
    comes from the blur, as it does for a user.
  • On Linux, a headless session starts on its own virtual display. The
    display counted as ready as soon as its lockfile existed, which Xvfb writes
    before it opens its sockets, so sessions started together could land on
    each other's display and the browser failed with cannot open display.
    The display is also no longer reachable over TCP.

Requires

  • invisible-core 34.32.0, which carries the display fix. Same engine
    (firefox-34).

v0.1.0

Choose a tag to compare

@feder-cr feder-cr released this 30 Sep 08:04

First version: a replica of invisible_playwright 0.25.7 with Selenium's contract.

  • webdriver.Firefox launches the same patched Firefox with the same profile,
    proxy, geography and hidden-surface handling as InvisiblePlaywright, and
    drives it over Juggler: no geckodriver, no Marionette, navigator.webdriver
    stays false.
  • Selenium's public API: WebDriver, WebElement, ShadowRoot, SwitchTo,
    Alert, ActionChains, ScrollOrigin, By, Keys, WebDriverWait,
    expected_conditions, Select, Timeouts and the exception hierarchy.
  • Every click, hover and drag travels along a path drawn from the session seed;
    keys carry the session's typing rhythm; input events are trusted.
  • execute_script runs in the page's world and reads its result back through
    the engine's Debugger, without running a serializer the page can observe.

On PyPI: https://pypi.org/project/invisible-selenium/0.1.0/