{ "info": { "author": "Mikhail Trifonov", "author_email": "mikhail.trifonov@corp.mail.ru", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Testing" ], "description": "============\nInstallation\n============\n\n::\n\n pip install noseapp_selenium\n\n\nInstall extension from app\n--------------------------\n\nconfig module ::\n\n from noseapp.ext.selenium import make_config\n\n\n SELENIUM_EX = make_config()\n\n SELENIUM_EX.configure(\n polling_timeout=30,\n implicitly_wait=30,\n maximize_window=True,\n )\n\n SELENIUM_EX.remote_configure(\n capabilities={\n drivers.CHROME: {\n 'version': '41',\n },\n },\n options={\n 'keep_alive': True,\n 'command_executor': 'url to selenium hub',\n },\n )\n\n etc...\n\n\napp module ::\n\n from noseapp import NoseApp\n from noseapp.ext.selenium import SeleniumEx\n\n\n class MyApp(NoseApp):\n\n def initialize(self):\n SeleniumEx.install(self)\n\n\nsuite ::\n\n from noseapp import Suite\n from noseapp import TestCase\n\n\n suite = Suite(__name__, require=['selenium'])\n\n\n class MyTestCase(TestCase):\n\n def setUp(self):\n self.driver = self.selenium.get_driver()\n\n def tearDown(self):\n self.driver.quit()\n\n def test_go_to(self):\n self.driver.get('http://google.ru')\n search_field = self.driver.query.input(id='gs_htif0').first()\n search_field.send_keys(\"ok google, let's get testing\")\n self.assertIn('ok google', self.driver.query.get_text())\n\n\nSimple usage\n------------\n\n::\n\n from noseapp.ext.selenium import drivers\n from noseapp.ext.selenium import SeleniumEx\n from noseapp.ext.selenium import make_config\n\n config = make_config()\n config.chrome_configure(\n executable_path='/path/to/chrome_driver_bin',\n )\n # for remote use\n config.remote_configure(\n capabilities={\n drivers.CHROME: {\n 'version': '40',\n },\n },\n options={\n 'command_executor': SELENIUM_HUB_URL,\n },\n )\n\n selenium = SeleniumEx(\n config,\n use_remote=False, # use True for remote driver\n implicitly_wait=30,\n maximize_window=True,\n driver_name=drivers.CHROME,\n )\n\n driver = selenium.get_driver()\n\n\nCreate query\n------------\n\n::\n\n from noseapp.ext.selenium.query import contains\n\n search_wrapper = driver.query.div(_class='search-wrap').first()\n search_field = driver.query(search_wrapper).input(id='search').first()\n search_field.send_keys(...)\n\n # driver.query.div(id=contains('hello')).wait()\n # driver.query.div(id=contains('hello')).exist\n # driver.query.div(id=contains('hello')).all()\n # driver.query.div(id=contains('hello')).get(3)\n\n\nForms\n-----\n\n::\n\n from noseapp.ext.selenium.forms import UIForm\n from noseapp.ext.selenium.forms import fields\n from noseapp.ext.selenium.query import contains\n from noseapp.ext.selenium.forms import make_field\n from noseapp.ext.selenium.forms import FieldsGroup\n from noseapp.ext.selenium.query import QueryObject\n\n\n class FirstFieldsGroup(FieldsGroup):\n class Meta:\n wrapper = QueryObject('div', _class='wrapper')\n\n field_one = fields.Input(\n 'field name',\n weight=1,\n value='hello',\n require=True,\n invalid_value='1',\n )\n field_two = fields.Checkbox(\n 'checkbox name',\n weight=2,\n value=True,\n )\n\n\n class MyForm(UiForm):\n class Meta:\n wrapper = QueryObject('div', _class=contains('form-wrapper'))\n\n description = fields.TextArea(\n 'description',\n weight=1,\n value=lambda: 'Hello World!',\n )\n\n first_group = make_field(FirstFieldsGroup, weight=2)\n\n def submit():\n button = self.query.input(id='button').first()\n button.click()\n\n\n form = MyForm(driver)\n\n form.fill()\n form.submit()\n\n\n # Iterators\n\n from noseapp.ext.selenium.forms import iter_fields\n from noseapp.ext.selenium.forms import iter_invalid\n from noseapp.ext.selenium.forms import iter_required\n from noseapp.ext.selenium.forms import preserve_original\n\n # by fields\n for field in iter_fields(form):\n field.fill()\n form.submit()\n\n # by required fields\n for field in iter_required(form):\n form.fill(exclude=[field])\n form.submit()\n\n # by fields with having invalid value\n for field in iter_invalid(form):\n with preserve_original(form):\n field.value = field.invalid_value\n form.fill()\n form.submit()\n\n\n # Memorizing action\n\n form.first_group.field_one.fill('another value')\n form.fill()\n form.submit()\n\n # Query to form wrapper\n\n form.query.div(...).first()\n\n\nPage Object\n-----------\n\n::\n\n from noseapp.ext.selenium import PageObject\n from noseapp.ext.selenium import PageRouter\n from noseapp.ext.selenium.page_object import PageApi\n from noseapp.ext.selenium.page_object import WaitConfig\n from noseapp.ext.selenium.page_object import ChildObjects\n\n\n class MyPageApi(PageApi):\n\n def click_on_element(self):\n self.page.element.click()\n\n\n class MyPage(PageObject):\n class Meta:\n api_class = MyPageApi\n forms = ChildObjects(\n my_form=MyForm,\n )\n objects=ChildObjects(\n my_child_object=...,\n )\n wrapper = QueryObject('div', _class='wrapper')\n\n element = QueryObject('li', data_blank='data-blank')\n\n\n # Create relationship\n\n PageRouter.add_rule('/my_page/', MyPage)\n\n\n router = PageRouter(driver, base_path='http://my-site.com')\n page = router.get('/my_page/') # or page = MyPage(driver)\n page.forms.my_form.fill()\n page.forms.my_form.submit()\n # page.objects.my_child_object ...\n page.refresh() # to refresh instances\n page.refresh(force=True) # to refresh instances and reload page\n\n page.element.click() or page.api.click_on_element()\n\n # Query to page object wrapper\n\n page.query.link(...).first()", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/trifonovmixail/noseapp_selenium", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "noseapp_selenium", "package_url": "https://pypi.org/project/noseapp_selenium/", "platform": "any", "project_url": "https://pypi.org/project/noseapp_selenium/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/trifonovmixail/noseapp_selenium" }, "release_url": "https://pypi.org/project/noseapp_selenium/1.2.3/", "requires_dist": null, "requires_python": null, "summary": "selenium extension for noseapp lib", "version": "1.2.3" }, "last_serial": 1746795, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "464c5920446dabf363d6a432cb53c2b4", "sha256": "901ea515d9938168ae9f34567b1492d3208d34f08d9ac63810fea99ee99a209d" }, "downloads": -1, "filename": "noseapp_selenium-1.0.0.tar.gz", "has_sig": false, "md5_digest": "464c5920446dabf363d6a432cb53c2b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11720, "upload_time": "2015-04-08T20:12:20", "url": "https://files.pythonhosted.org/packages/bb/ce/f14315ec8316d2f99f99b10c62b26a23e09e15a93cae46416d568a5ebf9c/noseapp_selenium-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "65b473684b06723af16220818bbc209b", "sha256": "b316f72f9febda9969251271a7efc50884ebc17fff8ab5a9e8c97e852fd49417" }, "downloads": -1, "filename": "noseapp_selenium-1.0.1.tar.gz", "has_sig": false, "md5_digest": "65b473684b06723af16220818bbc209b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11906, "upload_time": "2015-04-09T14:32:43", "url": "https://files.pythonhosted.org/packages/aa/78/927a7d46c2b46f66ab85804079cf7bfcb3a3cd15fb8d25227e435d76a7cd/noseapp_selenium-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "c252632887e250e9e3ee23cbdac8cdcb", "sha256": "7c7a1c77f6165432e000b2917f571fc7ae1ffa7de1b727b2c219d9a3103c57f3" }, "downloads": -1, "filename": "noseapp_selenium-1.0.2.tar.gz", "has_sig": false, "md5_digest": "c252632887e250e9e3ee23cbdac8cdcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11916, "upload_time": "2015-04-09T15:55:51", "url": "https://files.pythonhosted.org/packages/90/61/8a31e857e30ac01ded122e41974a830afea90c0dd31f15e3aa099f9ea3fa/noseapp_selenium-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "b58838d58246b424e924cd68e6ed2bcc", "sha256": "e3c33533bc02b9293f2734ba9b460444ea107a7924d19c3fc9ab5206100ba2ff" }, "downloads": -1, "filename": "noseapp_selenium-1.0.3.tar.gz", "has_sig": false, "md5_digest": "b58838d58246b424e924cd68e6ed2bcc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12110, "upload_time": "2015-04-16T15:08:27", "url": "https://files.pythonhosted.org/packages/ea/d5/b972acdeaf751f7938700747f647ad3299db9a0119f96be310ef90ae44b8/noseapp_selenium-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "e95a2489e963a0d0c65e9a3d36d8a568", "sha256": "318a0e4502329634ba77131c5c5e3c4b574d51461075b0527d574cd810669cae" }, "downloads": -1, "filename": "noseapp_selenium-1.0.4.tar.gz", "has_sig": false, "md5_digest": "e95a2489e963a0d0c65e9a3d36d8a568", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13638, "upload_time": "2015-04-20T15:53:59", "url": "https://files.pythonhosted.org/packages/8c/af/f26a996a58db3ee83417932dbb330e02599425c3fce927f051b67120c0f9/noseapp_selenium-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "d7cbadfd139e908f13f4f5423441ef7b", "sha256": "c4d5d460b5386d18e801fc5e6aefb4f1a9d724e98d35c31e88c08ce6b56907a0" }, "downloads": -1, "filename": "noseapp_selenium-1.0.5.tar.gz", "has_sig": false, "md5_digest": "d7cbadfd139e908f13f4f5423441ef7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14167, "upload_time": "2015-05-05T13:26:53", "url": "https://files.pythonhosted.org/packages/cf/69/f48d2e2304ac8bd82cf8429446467869fab18c9d03eaaf2959777515997d/noseapp_selenium-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "31bcb90ad05fb9e92268cc4c3a111377", "sha256": "b5906ecba5a34aac028ccd9abaeecca2040f254448f95013600cf8d4aa126de6" }, "downloads": -1, "filename": "noseapp_selenium-1.0.6.tar.gz", "has_sig": false, "md5_digest": "31bcb90ad05fb9e92268cc4c3a111377", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14300, "upload_time": "2015-05-05T18:25:54", "url": "https://files.pythonhosted.org/packages/cf/30/d4386df17e3336a9eb5893b90fdb3583ea2dad3dd99f6a7f3fb167033778/noseapp_selenium-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "e97060e3e7e0b83708941518056602ef", "sha256": "ade588ecf3ecfd841ea5f3ceea9a8640c3a93423c94797da9ab5f1d2ec089488" }, "downloads": -1, "filename": "noseapp_selenium-1.0.7.tar.gz", "has_sig": false, "md5_digest": "e97060e3e7e0b83708941518056602ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14546, "upload_time": "2015-05-06T16:15:19", "url": "https://files.pythonhosted.org/packages/a1/9d/ce2035e05ada54e8410ce2010e5cc3ca68b1f57a11e9c1efccce8c36353d/noseapp_selenium-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "947723a16b431615c461851f6df972ba", "sha256": "d06509847f4a5c2967b7096f34dfe2e20ecec10b4166fa02454cacca387a68e7" }, "downloads": -1, "filename": "noseapp_selenium-1.0.8.tar.gz", "has_sig": false, "md5_digest": "947723a16b431615c461851f6df972ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14535, "upload_time": "2015-05-06T19:33:03", "url": "https://files.pythonhosted.org/packages/53/5e/a26f50656457ac9c515a96a0bab566d00d67454c424afafc49c76c162671/noseapp_selenium-1.0.8.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "99903b82d37d852af897a344ac3a5b15", "sha256": "62e3b2b590558b99172a8ebe52be19f11284ff9f31e3ee18c3070cb008df8460" }, "downloads": -1, "filename": "noseapp_selenium-1.1.0.tar.gz", "has_sig": false, "md5_digest": "99903b82d37d852af897a344ac3a5b15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14673, "upload_time": "2015-05-13T14:30:45", "url": "https://files.pythonhosted.org/packages/7b/00/4983824cfb508709483dc317a4d97fefaa9bb158d6a3ffce464794d7d4c6/noseapp_selenium-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "33d41a7b9db15a96c3dec8c08d2b88d5", "sha256": "671b114dc4435baac13d0cf3cfd41d3834efd506a25d0af16779df007a4846fc" }, "downloads": -1, "filename": "noseapp_selenium-1.1.1.tar.gz", "has_sig": false, "md5_digest": "33d41a7b9db15a96c3dec8c08d2b88d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14676, "upload_time": "2015-05-13T19:39:41", "url": "https://files.pythonhosted.org/packages/1e/b7/1d957e0d18d11b385522b1211f5b0c1b11ecb8eff5e31d3c84d5d1cd33d4/noseapp_selenium-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "8ec6e200f4ff7412f9e23b6db9cf46bb", "sha256": "e2169e8e9566b609ff95e0125144d3d3244fd63619d439467cf5d072c7fed507" }, "downloads": -1, "filename": "noseapp_selenium-1.1.2.tar.gz", "has_sig": false, "md5_digest": "8ec6e200f4ff7412f9e23b6db9cf46bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14742, "upload_time": "2015-05-14T11:45:13", "url": "https://files.pythonhosted.org/packages/dd/99/706b6cc1c9197cce03f112e91d4bd0cbdf73ebb4ed7b224d0214a156e550/noseapp_selenium-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "45ac20de39fd2283f0e5d7ca421258d9", "sha256": "0d4354ff86d2b58f8089eefc79e258926190a66692d0225bc27444dd3299e09c" }, "downloads": -1, "filename": "noseapp_selenium-1.1.3.tar.gz", "has_sig": false, "md5_digest": "45ac20de39fd2283f0e5d7ca421258d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14779, "upload_time": "2015-05-19T11:27:10", "url": "https://files.pythonhosted.org/packages/a0/01/ce6b18fb8c392a855d83dc7e855332901dc22d9b17a05682b9879a178401/noseapp_selenium-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "a375038716cb8df05691e46da79fcae0", "sha256": "746455573e8370aa3d2b092f3dad556e7a7f428cbaa62345dad5378dc4db90df" }, "downloads": -1, "filename": "noseapp_selenium-1.1.4.tar.gz", "has_sig": false, "md5_digest": "a375038716cb8df05691e46da79fcae0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14842, "upload_time": "2015-05-25T17:33:52", "url": "https://files.pythonhosted.org/packages/c3/aa/e1ebfc3800b9bae8e08a82a7a26ef334db4372ee49c8f123ecd9e9831e58/noseapp_selenium-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "c570cd8bf6bcc3b4baa05a25024ac32a", "sha256": "0c6d8828ae0ab3aab1282d0075944b1f781fb879791d818d8b78f99f9bea832f" }, "downloads": -1, "filename": "noseapp_selenium-1.1.5.tar.gz", "has_sig": false, "md5_digest": "c570cd8bf6bcc3b4baa05a25024ac32a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14960, "upload_time": "2015-05-29T17:45:03", "url": "https://files.pythonhosted.org/packages/2a/8d/e4181a87ecf2c0eb81b72f5f390f937db6b6ca0a6ac38e7faffb5c98967b/noseapp_selenium-1.1.5.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "811cf7e90d077b20d93e3f9ac8d8939d", "sha256": "e253e68d77247c58264318d64e2e379e236007b545e9d95e85ce73ab8103d463" }, "downloads": -1, "filename": "noseapp_selenium-1.2.0.tar.gz", "has_sig": false, "md5_digest": "811cf7e90d077b20d93e3f9ac8d8939d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17261, "upload_time": "2015-07-21T14:24:05", "url": "https://files.pythonhosted.org/packages/a8/54/87ca4e36fed32ea94ae214a98f53df46a76986f3b1370a1172b04b48dbfb/noseapp_selenium-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "d94ac733970b6ba372bd2e6c7c46ba31", "sha256": "f4d6e22904d67b7afd594e7f85954ad2d41bf6a59eec588ae925e17f7655f90c" }, "downloads": -1, "filename": "noseapp_selenium-1.2.1.tar.gz", "has_sig": false, "md5_digest": "d94ac733970b6ba372bd2e6c7c46ba31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17580, "upload_time": "2015-07-23T12:17:07", "url": "https://files.pythonhosted.org/packages/6e/dd/a4fa4d418bda6bfbe89bdac351f7a083c3c2b5aa93b23453887688f43c16/noseapp_selenium-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "95d08400ec8f685ad3b9f5bbb92a26fe", "sha256": "796da6fabdb4942a2e482dbfb3704f77aacb9eb340c370c89edae4385a4ef225" }, "downloads": -1, "filename": "noseapp_selenium-1.2.2.tar.gz", "has_sig": false, "md5_digest": "95d08400ec8f685ad3b9f5bbb92a26fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17600, "upload_time": "2015-10-01T10:06:58", "url": "https://files.pythonhosted.org/packages/09/88/3a0f06383a185e2c0f8e9d9a969a2740cce5e5d8ea7e05ef3a3681c32d21/noseapp_selenium-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "29bd5522f2c71ae7595e08e7e958f012", "sha256": "f3b7479376b462727c0c8b35ee4d3426c745192b1609d98af32d855256c60ed4" }, "downloads": -1, "filename": "noseapp_selenium-1.2.3.tar.gz", "has_sig": false, "md5_digest": "29bd5522f2c71ae7595e08e7e958f012", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17748, "upload_time": "2015-10-01T10:11:14", "url": "https://files.pythonhosted.org/packages/cb/53/bcc8ee42d442b5080a61ec2f2d376370a823ebfaedd0551117337d8f50cb/noseapp_selenium-1.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "29bd5522f2c71ae7595e08e7e958f012", "sha256": "f3b7479376b462727c0c8b35ee4d3426c745192b1609d98af32d855256c60ed4" }, "downloads": -1, "filename": "noseapp_selenium-1.2.3.tar.gz", "has_sig": false, "md5_digest": "29bd5522f2c71ae7595e08e7e958f012", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17748, "upload_time": "2015-10-01T10:11:14", "url": "https://files.pythonhosted.org/packages/cb/53/bcc8ee42d442b5080a61ec2f2d376370a823ebfaedd0551117337d8f50cb/noseapp_selenium-1.2.3.tar.gz" } ] }