Skip to main content

About this module

selenium webdriver wrapper to make manipulation easier.

Features

  • Support remote webdriver.

  • Easy to type aliases. (find_element_by_xpath => xpath, etc.)

  • Wrapped WebdriverWait( … ).until( … ) pattern.

  • Polling at the time of clicking or selecting.

  • Wrapping chaining.

How to install

Requires python2.6 or later (exclude python3.x). You need pip or distribute or setuptools:

$ pip install seleniumwrapper

or use easy_install:

$ easy_install seleniumwrapper

also you need selenium:

$ pip install selenium

Example to use

create function helps you to init webdriver and wrap it easily:

>>> import seleniumwrapper as selwrap
>>> br = selwrap.create("chrome")

connect function helps you to use remote webdriver and wrap it:

>>> br = connect("android", "http://localhost:9999", {"acceptSslCerts": True})

SeleniumWrapper delegate to its wrapped webdriver:

>>> br.get("http://www.example.com")
<seleniumwrapper.wrapper.SeleniumWrapper object at 0x...>
>>> br.xpath("//div[@class='main'])
<seleniumwrapper.wrapper.SeleniumWrapper object at 0x...>

Setting eager=True to invoke find_elements:

>>> br.xpath("//a", eager=True)
<seleniumwrapper.wrapper.SeleniumContainerWrapper object at 0x...>

SeleniumContainerWrapper also delegate to its wrapped container:

>>> links = [i.get_attribute("href") for i in br.xpath("//a", eager=True)]

Each contents in SeleniumContainerWrapper also SeleniumWrapper:

>>> tds = [tr.xpath("//td", eager=True) for tr in br.xpath("//tr", eager=True)]

Basic API

  • seleniumwrapper.create(drivername)

    Create webdriver instance and wrap it with SeleniumWrapper.

SeleniumWrapper

  • unwrap

    Retrieves WebDriver or WebElement from wrapped object:

    >>> isinstance(br.unwrap, WebElement)
    True
  • parent

    find_element_by_xpath(“./parent::node()”):

    >>> price = br.by_tag("th", "Price").parent.by_tag("td").text
  • alert

    Returns Alert(switch_to_alert()) object:

    >>> br.alert.accept()
  • click(timeout=3, presleep=0, postsleep=0)

    Continue to polling until timeout or element is displayed and clickable:

    >>> br.button("Send").click()
  • waitfor(type, target, eager=False, timeout=3)

    See source:

    >>> br.waitfor("xpath", "//input[@type='submit']")
  • xpath(target, eager=False, timeout=3)

    find_element_by_xpath(target, timeout):

    >>> buttons = br.xpath("//input[@type='submit' or @type='button']", eager=True)
  • css(target, eager=False, timeout=3)

    find_element_by_css_selector(target, timeout):

    >>> [li.text for li in br.css("ul li")]
  • by_tag(self, tag, eager=False, timeout=3, **attributes)

    Returns specified tagged element with specified attributes optionally.:

    >>> br.by_tag("link", rel="stylesheet")
  • by_text(text, tag=’*’, partial=False, eager=False, timeout=3)

    similar to find_element_by_link_text or find_element_by_partial_link_text, but this method can be applicable to any tag:

    >>> br.by_text("Go back to Top Page", "a")
  • by_class(target, eager=False, timeout=3)

    find_element_by_class_name(target, timeout):

    >>> br.by_class("colored")
  • by_id(target, eager=False, timeout=3)

    find_element_by_id(target, timeout):

    >>> br.by_id("main_contents")
  • by_name(target, eager=False, timeout=3)

    find_element_by_name(target, timeout):

    >>> br.by_name("page_password")
  • by_linktxt(target, eager=False, timeout=3, partial=False)

    find_element_by_link_text(target, timeout). if partial=True, then find_element_by_partial_link_text:

    >>> br.by_linktxt("Go back to", partial=True)
  • href(partialurl=None, eager=False, timeout=3):

    find_element_by_xpath(“//a”, timeout). if partialurl was given, search ‘a’ tag which href contains partialurl:

    >>> phplinks = br.href(".php", eager=True)
  • img(alt=None, ext=None, eager=False, timeout=3)

    find_elements_by_xpath(“//img”, timeout):

    >>> br.img(alt="I am sorry", ext="sorry.gif")
  • button(value, eager=False, timeout=3)

    find_element_by_xpath(“//input[@type=’submit’ or @type=’button’ and @value=’{}’]”.format(value), timeout):

    >>> br.button("Send this form").click()
  • checkbox(self, eager=False, timeout=3, **attributes)

    Returns ‘input’ element type=’checkbox’:

    >>> br.checkbox(name='checked_value', id='hoge')
  • radio(self, eager=False, timeout=3, **attributes)

    Retuns ‘input’ element type=’radio’.:

    >>> br.radio(name='hoge', id='fuga').click()
  • select(self, eager=False, timeout=3, **attributes)

    Returns Select(self.by_tag(“select”, eager, timeout, **attributes) or their wrapped SeleniumContainerWrapper:

    >>> br.select(name="hoge").select_by_index(1)
    >>> [select.is_multiple for select in br.select(eager=True, name="hoge")]

SeleniumContainerWrapper

  • sample(size)

    Returns random.sample(self._iterable, size):

    >>> br.img(eager=True).sample(10)
  • choice()

    Returns random.choice(self._iterable):

    >>> br.img(eager=True).choice()

Recent Change

  • 0.3.1
    • Add connect functon.

  • 0.3.0
    • Change tag method to by_tag.

    • Add checkbox, radio.

    • Change select property to method.

    • Add sample, choice methods to SeleniumContainerWrapper.

    • Fix click bug.

  • 0.2.4
    • Fix bug.

  • 0.2.3
    • Add ext argument to img (alt and ext are both optional.)

  • 0.2.2
    • Add new property alert

    • Change img’s argument from ext to alt( find_element_by_xpath(“//img[@alt=’{}’.format(alt)) )

    • Modify SeleniumContainerWrapper’s __contains__ behavior to unwrap given object if it is a SeleniumWrapper.

Release files for seleniumwrapper 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distributions (sdists)

Source distribution for seleniumwrapper 0.3.1
File Size Uploaded
seleniumwrapper-0.3.1.zip 16.4 kB Details
seleniumwrapper-0.3.1.tar.gz 10.9 kB Details

Release files / seleniumwrapper-0.3.1.zip

Download URL seleniumwrapper-0.3.1.zip
Size 16.4 kB
Tags Source
SHA-256 checksum
How to use checksums
0aa754516bca2a9f0f233f6af1b11e2df900d7d809e417d105389f238faf93b3
BLAKE2b-256 checksum
How to use checksums
e0393e4a8c422ab16684a9be122ababc35af007bf662e399ee3e529d9d58c143
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / seleniumwrapper-0.3.1.tar.gz

Download URL seleniumwrapper-0.3.1.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
57992119a04378eb7c4998c726d6de91c383bc3301ecb20620c5be33c341e78c
BLAKE2b-256 checksum
How to use checksums
05a9ca0278850fe7e8eaca38418cba62ae8cfb8bce5fef31b836f4dc774af290
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

3 release files

0.4.0

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

This release

0.3.1 This release

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page