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.2.tar.gz (5.5 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.2-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: xpath_string-0.2.2.tar.gz
  • Upload date:
  • Size: 5.5 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.2.tar.gz
Algorithm Hash digest
SHA256 59cc17a37f369bf445ed4e4bc34aa13ca22671f0658de51b990002e595d2ba49
MD5 b45255f1ee48ba2ed9e3b50aa5909588
BLAKE2b-256 b9fc3cd14793298514fd83b3ce3ec729f63449fd49df80168b93dcb6faaa4f14

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xpath_string-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 8.1 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ca4abd46c68955ac3bec5a1a23aa8f3df74690aec0f7f4cdfa0ba148999ad264
MD5 4b423f7bf76ea8de0e301cc1bc3dd182
BLAKE2b-256 3d8e065f58b2b3ee90c2d01e8a591e2d972669b1a1afa8bb7cc476d972e9e19c

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