Skip to main content

Selenium webdriver using thread pool. (Chrome only now.)

Project description

threadingwebdriver

Selenium headless webdriver using two threadpools.
ThreadPool(1) for control browser.
ThreadPool(custom_number) for read page(ex: get WebElement).
Chrome only.

Initialize

import threadingwebdriver
driver = threadingwebdriver.ChromeWebdriver()
driver.initialize()

Close

Close driver. It will wait tasks of ThreadPools are finish.

driver.close()

Open URL (Async)

url = 'https://www.google.com/'
driver.open_async(url)

Open URL (Sync)

url = 'https://www.google.com/'
is_open:bool = driver.open(3, url)

Get Element (Async)

url = 'https://www.google.com/'
driver.open_async(url)

timeout = 3
body_xpath = '/html/body'
body_xpath_result:WebElementAsyncResult = driver.get_element_xpath_async(timeout, body_xpath)
# code...
body:WebElement = body_xpath_result.get()

Concurrency

import threadingwebdriver
driver = threadingwebdriver.ChromeWebdriver()
driver.initialize(read_thread_count = 3)
timeout = 2
url = "Input Your URL"
driver.open(timeout, url)

p_async = driver.get_element_xpath_async(timeout, '/html/body/div/p')
a_async = driver.get_element_xpath_async(timeout, '/html/body/div/a')
div_async = driver.get_element_xpath_async(timeout, '/html/body/div')

p = p_async.get()
a = a_async.get()
div = div_async.get()

Get Element (Sync)

timeout = 3
body_xpath = '/html/body'
body:WebElement = driver.get_element_xpath(timeout, body_xpath)

Initialize Websocket Listener

async def websocket_listener(listener):
    async for event in listener:
        payload_data = event.response.payload_data
        print(payload_data)

import threadingwebdriver
driver = threadingwebdriver.ChromeWebdriver()
driver.initialize(websocket_listening_function=websocket_listener)

url = 'https:// Input Your URL'
driver.open(3, url)

Exceptions

Based on thread order.

url1 = 'https://www.google.com/'
url2 = 'https://www.github.com/'
driver.open_async(url1)
driver.open_async(url2)
timeout = 3
body_xpath = '/html/body'
body_xpath_result:WebElementAsyncResult = driver.get_element_xpath_async(timeout, body_xpath) 
# Exception: if run 'get_element_xpath_async()' before run 'open_async(url2)'.
url1 = 'https://www.google.com/'
url2 = 'https://www.github.com/'
driver.open_async(url1)
timeout = 3
body_xpath = '/html/body'
body_xpath_result:WebElementAsyncResult = driver.get_element_xpath_async(timeout, body_xpath)
driver.open_async(url2) 
# Exception: run 'open_async(url2)' if not finish 'get_element_xpath_async()'.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

threadingwebdriver-0.0.3.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

threadingwebdriver-0.0.3-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file threadingwebdriver-0.0.3.tar.gz.

File metadata

  • Download URL: threadingwebdriver-0.0.3.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for threadingwebdriver-0.0.3.tar.gz
Algorithm Hash digest
SHA256 e1d45644b6330c1a73b6a40f498dec58970cf645e6d33b27a46a0acdb8e762c4
MD5 8737c813e56d72c1ee6832f0cbdbecfa
BLAKE2b-256 13deca3469e1ab9c4ebd9cc0bfec26c689ad6cd0f5e772c93712cde810512e00

See more details on using hashes here.

File details

Details for the file threadingwebdriver-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for threadingwebdriver-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f5b1767a16232b2fd779245127296582aef7215fce23e28365559827b448a582
MD5 fd3c9555eff559f450c4ece42a8dc947
BLAKE2b-256 7ed16fb3ad3a8cbcfd53d5dd5f9289d10b79062be2790d379a5a6c21715e41c1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page