Selenium core for Python
Project description
Selenium CORE for Python
Introduction
It's a library with core functions simplifying work with Selenium-controlled applications.
This package is based on Aquality Selenium CORE for .NET and provides a set of methods related to the most common actions performed with elements. So you shouldn't have a lot of difficulties with this solution if you interacted with Aquality Selenium CORE.
To simplify overriding of implementations this solution uses Dependency Injection.
Supported Python Versions
- Python 3.7-3.9
Installation
If you have pip on your system, you can simply install or upgrade the Python bindings:
pip install -U selenium
Alternately, you can download the source distribution from PyPI, unarchive it, and run:
python setup.py install
Quick start
- Setup Dependency Injection container using Startup
The simplest way is to create your own Services class extended from abstract CoreServices with the following simple signature:
class BrowserService(CoreService):
@staticmethod
def is_application_started() -> bool:
return CoreService._is_application_started()
@staticmethod
def application() -> YourApplication:
return CoreService.get_application(lambda service: BrowserService._start_application(service))
@staticmethod
def service_provider() -> ServiceProvider:
return CoreService.get_service_provider(lambda service: BrowserService.application())
@staticmethod
def _start_application(service_provider: ServiceProvider):
... # your implementation
If you need to register your own services / rewrite the implementation, you need override Startup and implement BrowserServices like in example below:
class BrowserService(CoreService):
_browser_startup_container: CustomStartup = CustomStartup()
@staticmethod
def is_application_started() -> bool:
return CoreService._is_application_started()
@staticmethod
def application() -> Application:
return CoreService.get_application(lambda service: your_implementation, lambda: BrowserService._browser_startup_container.configure_services(lambda service: BrowserService.application()))
@staticmethod
def service_provider() -> ServiceProvider:
return CoreService.get_service_provider(lambda service: BrowserService.application())
@staticmethod
def _start_application(service_provider: ServiceProvider):
... # your implementation
class CustomStartup(Startup):
@staticmethod
def configure_services(application_provider: Callable, settings: JsonSettingsFile = None) -> ServiceProvider:
service_provider = Startup.configure_services(application_provider, settings)
# your implementation service_provider.timeout_configuration.override(Singleton(TimeoutConfiguration, service_provider.settings_file))
return service_provider
- Work with Application via the implemented BrowserServices or via element services
All the services could be resolved from the Dependency Injection container via ServiceProvider
BrowserServices.application().driver.find_element(ELEMENT).click()
BrowserServices.service_provider().conditional_wait().wait_for_driver(
lambda driver: len(driver.find_elements(Locator(By.XPATH, "//*"))) > 0
)
License
Library's source code is made available under the Apache 2.0 license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for py-selenium-auto-core-0.4.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f954cf77eda555c5b05a0223091aa269d9a86bc02d4ca70ff93237a9dcb3412 |
|
MD5 | e262c08b2f2114bd2d4230a6237ec5d0 |
|
BLAKE2b-256 | b352b2178f3eac7a2cb17496522e48bc6127c6b5928695a0c19b2c4ad6f20e57 |
Hashes for py_selenium_auto_core-0.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5867121b118e1f75b38403909d2ff5197563ddd61271088d3d66fe6e9411541 |
|
MD5 | 9f98e4566ba4c01ba10a436d1114695f |
|
BLAKE2b-256 | 3739373a5967ea39b1078133778bd4435a8b02ad54657aef23e273839f72dd28 |