Skip to main content

Module which allows to make xpath operations over string which represent xpath

Project description

https://travis-ci.com/yavorek/xpath-string.svg?branch=master https://img.shields.io/badge/python-3.4%2C%203.5%2C%203.6%2C%203.7-blue.svg https://img.shields.io/pypi/v/xpath-string.svg https://codecov.io/gh/yavorek/xpath-string/branch/master/graph/badge.svg

xpath-string

Simple module providing operations on Xpath string

Currently only addition of xpath is supported

Xpath Object

  • Initialization
    from xpath_string.xpath import Xpath
    
    xpath_object = Xpath('//some[@xpath="string"]')
  • Attributes:

    xpath - xpath string (type: ‘str’)

Xpath Adding

  • Xpath object + string

    Result of addition string to Xpath object is Xpath object. Adding string to Xpath object is the same as adding two strings.

    xpath_object = Xpath('//some[@xpath="string"]')
    string = '//div[@class="name"]'
    result = xpath_object + string
    
    # result == '//some[@xpath="string"]//div[@class="name"]'
    # result.xpath == '//some[@xpath="string"]//div[@class="name"]'

    Same situation is when Xpath object represents xpath string with OR operator

    xpath_object = Xpath('//some[@xpath="string"]|\\span')
    string = '//div[@class="name"]'
    
    result = xpath_object + string
    # result == '//some[@xpath="string"]|//span//div[@class="name"]'
    # result.xpath == '//some[@xpath="string"]|//span//div[@class="name"]'
  • Xpath object + Xpath object

    Result of addition Xpath object to Xpath object is Xpath Object.

    xpath_object_1 = Xpath('//some[@xpath="string"]')
    xpath_object_2 = Xpath('//div[@class="name"]')
    
    result = xpath_object_1 + xpath_object_2
    # result == '//some[@xpath="string"]//div[@class="name"]'
    # result.xpath == '//some[@xpath="string"]//div[@class="name"]'

    When at least one Xpath object has or operator in main part of xpath (not inside square brackets):

    xpath_object_1 = Xpath('//some[@xpath="string"]|//span')
    xpath_object_2 = Xpath('//div[@class="name"]')
    
    result_1 = xpath_object_1 + xpath_object_2
    # result_1 == '//some[@xpath="string"]//div[@class="name"|//span//div[@class="name"]'
    # result_1.xpath == '//some[@xpath="string"]//div[@class="name"|//span//div[@class="name"]'
    
    result_2 = xpath_object_2 + xpath_object_1
    # result_2 == '//div[@class="name"]//some[@xpath="string"]|//div[@class="name"]//span'
    # result_2.xpath == '//div[@class="name"]//some[@xpath="string"]|//div[@class="name"]//span'

Xpath.format()

The string built-in is overwrote. Xpath.format(‘some string’) is formatting xpath string attribute of a Object. It returns new Xpath object with ‘formatted’ xpath attribute.

Example:

xpath_object_1 = Xpath('//some[@xpath="{}"]')
xpath_object_2 = xpath_object_1.format('new')
# xpath_object_1 == Xpath('//some[@xpath="{}"]')
# xpath_object_2 == Xpath('//some[@xpath="new"]')

xpath_object_3 = Xpath('//some[@xpath="{sth}"]')
xpath_object_4 = xpath_object_1.format(sth='one')
# xpath_object_3 == Xpath('//some[@xpath="{sth}"]')
# xpath_object_4 == Xpath('//some[@xpath="one"]')

Running tests

Install tox (pip install tox) Then:

tox

OR install nose (pip install nose) Then:

nosetests

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

xpath_string-0.2.3.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xpath_string-0.2.3-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file xpath_string-0.2.3.tar.gz.

File metadata

  • Download URL: xpath_string-0.2.3.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for xpath_string-0.2.3.tar.gz
Algorithm Hash digest
SHA256 072faaadcc51ce0d93766c4afd17122ee3a89c9ecffcdfe256fca758e04ef455
MD5 a0407c158eb9bdc665c12bc59cb1e5ae
BLAKE2b-256 bf432d4a5be2f7901589da74a860420e14455884e9f2ff1561bd5cb09d294719

See more details on using hashes here.

File details

Details for the file xpath_string-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: xpath_string-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for xpath_string-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5a260433729018c634fbf2a95e7944d0bdc0187f05d8babc085664ad898760a1
MD5 2276fe62e1b0f1c616272bff2eea1203
BLAKE2b-256 96088a703b8203e6db1fe74f2113b54ff37d1ec51096400beba3c4910e58dc56

See more details on using hashes here.

Supported by

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