Mops

Latest version: v3.2.0

Safety actively analyzes 722581 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 7

3.2.0

*Release date: 2025-03-31*

Added
- Continuous verification waits for `Element.wait_visibility` and `Element.wait_hidden`
- `ContinuousWaitException` for continuous verification errors in wait methods
- Caret hiding for screenshots in Selenium / Appium
- `is_displayed` / `is_hidden` execution results logged
- Retry decorator for Selenium / Appium methods to handle `StaleElementReferenceException`

Changed
- Playwright's `wait_visibility`, `wait_hidden`, and `wait_availability` logic moved to MOPS methods

Fixed
- Small bug in the documentation example
- Bug in the `assert_screenshot` method with the `remove` argument for certain popups
- `StaleElementReferenceException` handler during wait/gathering of `Element.text`

3.1.0

*Release date: 2025-01-29*

Added
- [Kitchen Sink](https://mops.readthedocs.io/3.1.0/kitchen_sink/index.html) section on ReadTheDocs
- Source code links for interfaces in ReadTheDocs [< example > ](https://mops.readthedocs.io/3.1.0/_modules/mops/base/driver_wrapper.html#DriverWrapper.save_screenshot)
- `PlayDriver.delete_cookie` method
- `PlayDriver.switch_to_frame` method
- `PlayDriver.switch_to_default_content` method
- `LocatorType` constants [< more info >](https://mops.readthedocs.io/3.1.0/kitchen_sink/locator_type.html)

Changed
- **Breaking:** Minimum Playwright version is now [1.48.0](https://pypi.org/project/playwright/1.48.0/)
- **Breaking:** `DriverWrapper.get_inner_window_size` now returns a `Size` object instead of a `tuple`
- **Breaking:** `DriverWrapper.set_window_size` now sets the inner window size (affects Selenium only)
- **Breaking:** `Box.get_image_cut_box` now accepts a `Size` object for the `size` argument and returns a `Box` object
- `PlayDriver.get_inner_window_size` now retrieves `page.viewport_size` instead of using a custom JavaScript script
- Improved error logging for `Element`: Selector output has been adjusted
- `Element` representation: `locator_type` is now part of `locator`
- Reduced exception inheritance in `VisualComparison`
- Selenium & Appium error logging
- Improved most docstrings

Fixed
- `Element.wait_for_value` now correctly handles an empty `expected_value` argument
- `Element.wait_for_text` now correctly handles an empty `expected_text` argument
- `Element.value` now returns an empty string instead of `None`

Removed
- **Breaking:** Removed `Locator.loc_type` attribute/argument [< how to provide locator type >](https://mops.readthedocs.io/3.1.0/kitchen_sink/locator_type.html)
- **Breaking:** Removed `CutBox` dataclass [< use Box instead >](https://mops.readthedocs.io/3.1.0/kitchen_sink/box.html)

Reworked
- Unified selector synchronization methods across all frameworks
- Improved automatic locator type detection

---

3.0.0

*Release date: 2025-01-13*

Breaking: Project renamed

Changed
- Dev: pyproject.toml integrated instead of setup.py
- Dev: UV integrated

Removed
- Dev: tox usage removed

---

2.4.0

*Release date: 2025-01-10*

Added
- `DriverWrapper.is_safari` method
- `DriverWrapper.is_firefox` method
- `DriverWrapper.is_chrome` method
- `InvalidLocatorException` for locator validation
- `VisualComparison` now removes actual and diff files upon successful assertions
- Internal CI pipelines with tests

Removed
- `DriverWrapper.switch_to_parent_frame` method
- `dyatel/dyatel_play/helpers/trace.py` module

Changed
- `DriverWrapper.get_inner_window_size` now returns a `Size` object instead of a dictionary
- `Element.click` now uses a JavaScript click for the Safari driver
- `Element.click_outside` now has default arguments `x=-5, y=-5` across all platforms
- `VisualComparison` dummy elements' `style.position` changed from `"fixed"` to `"absolute"`
- `VisualComparison` dummy elements' `style.top/left` now account for page scroll
- `VisualComparison` now includes a `sleep(0.1)` delay if `fill_background` or `remove` actions are specified after an action
- The Safari browser on Appium and Selenium uses the `innerText` DOM property instead of the driver's `text` API to improve compatibility with other platforms
- The Safari browser on Selenium uses JavaScript-based `click` instead of the driver's `click` API to enhance compatibility with other platforms
- Documentation for most methods has been improved

Fixed
- `DriverWrapper.save_screenshot` no longer throws an error when called without the optional `screenshot_base` argument
- `Element.save_screenshot` no longer throws an error when called without the optional `screenshot_base` argument
- `VisualComparison.assert_screenshot` with the argument `threshold=0` now respects the provided value instead of defaulting
- `VisualComparison` under `soft_generate_reference` no longer takes two images (actual → assertion → reference)

---

2.3.3

*Release date: 2025-01-09*

Added
- `dyatel.mixins/objects.driver.Driver` object

Changed
- **Breaking:** `DriverWrapper` initialization now requires a `Driver` object
- **Breaking:** Playwright's `context` and `page` creation have been moved out of `dyatel-wrapper`

**Note:** Examples of the new logic can be found in the [ReadTheDocs documentation](https://dyatel-wrapper.readthedocs.io/getting_started.html#selenium-driver-setup)

---

2.3.2

*Release date: 2024-12-19*

Changed
- Supported Python-Appium-Client version changed from `2.11.1` to `3.1.0`
- Supported appium version changed from `2.2.1` to `2.12.1`
- Supported xcuitest version changed from `5.0.0` to `7.28.3`
- Supported uiautomator2 version changed from `2.34.1` to `3.9.0`

---

Page 1 of 7

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.