Interact with an app using visual definitions of elements
Project description
velenium
Interact with an app using visual definitions of elements
sample usage
import unittest
from appium import webdriver
from velenium import VisualElement, MIDDLE, RIGHT, VERTICAL, HORIZONTAL, CV_SQDIFF
class VisualTestCase(unittest.TestCase):
def test_visual(self):
desired_caps = dict(
...
)
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# create a visual definition
element = VisualElement(driver, 'path/to/pattern.png')
# create a visual definition using multiple images using glob path
element = VisualElement(driver, 'path/to/patterns/**/pattern_*.png')
# assert element is visible
self.assertTrue(element.is_visible())
# wait until element is visible, raises TimeoutException from selenium if timeout
element.wait_until_visible()
# wait until element is not visible, raises TimeoutException from selenium if timeout
element.wait_until_not_visible()
# find only in de middle region
VisualElement(driver, 'path/to/pattern.png', region=MIDDLE).click()
# custom region, upper right in the example
VisualElement(driver, 'path/to/pattern.png', region=((0.5, 0), (1, 0.5))).click()
# click on element on de right border
VisualElement(driver, 'path/to/pattern.png', target=RIGHT).click()
# custom region, center right in the example
VisualElement(driver, 'path/to/pattern.png', target=(0.5, 0)).click()
# refresh position of element and click
element.reset_object().click()
# click and wait no visibility of the element
element.click().wait_until_not_visible()
# find with different similarity threshold, by default is 70%
VisualElement(driver, 'path/to/pattern.png', similarity=0.8).click()
# click the 2nd best match of element
VisualElement(driver, 'path/to/pattern.png', order=1).click()
# click element at 2nd position in vertical order
VisualElement(driver, 'path/to/pattern.png', order=1, disposal=VERTICAL).click()
# or
item = VisualElement(driver, 'path/to/pattern.png', disposal=VERTICAL)
item.matches[1].click()
# click element at 3er position in horizontal order
VisualElement(driver, 'path/to/pattern.png', order=2, disposal=HORIZONTAL).click()
# or
item = VisualElement(driver, 'path/to/pattern.png', disposal=HORIZONTAL)
item.matches[2].click()
# use another cv2 method to get the match, by default uses CV_CCOEFF
VisualElement(driver, 'path/to/pattern.png', method=CV_SQDIFF).wait_until_visible()
# count matches
print(len(element.matches))
# or
print(element.count)
# iterate over matches
for e in element.matches:
e.click()
# enable debug images in "temp/" folder
element.debug()
# disable debug images
element.debug(False)
if __name__ == '__main__':
unittest.main()
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
velenium-0.5.0.tar.gz
(6.2 kB
view details)
File details
Details for the file velenium-0.5.0.tar.gz
.
File metadata
- Download URL: velenium-0.5.0.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b0b6466520b5306b16c3bcaa7c4903f0f2822fe38d36089956ab21ca243f0ce |
|
MD5 | be2a5c621ff14ba62ee108fb3b4f7ec9 |
|
BLAKE2b-256 | e22cbe2a8e4746608b69bf3a823b71158c9306d6b3255015621d5377b5da3e7a |