Git Product home page Git Product logo

caqui's Introduction

Hi ๐Ÿ‘‹, I'm Douglas

A passionate Software Quality Assurance Engineer and now a Python backend developer from Brazil

douglasdcm

trophy

  • ๐Ÿ”ญ Iโ€™m currently working on a personal project to help people to find jobs using AI. The project is called Vagas pra mim

  • ๐ŸŒฑ Iโ€™m currently learning Pyscript, Kubernetes, Flask, Nginx and Javascript (at least the basic)

  • ๐Ÿ‘จโ€๐Ÿ’ป All of my projects are available at here in GitHub

  • ๐Ÿ“ I regularly write articles on medium

  • ๐Ÿ’ฌ Ask me about Jmeter, Python and Selenium Webdriver

  • ๐Ÿ“„ Know about my experiences I have an undergraduate degree in Mathematics and graduate degree in Artificial Intelligence, IT Management and Software Designing. I have been working with software quality assurance since 2010. I have ISTQB CTFL and CTFL-Performance Testing certifications and I love to work with automated tests using Selenium, Jmeter and Postman. I am a dedicated person and focused on my responsibilities, I am comfortable either in individual activities as collectives. I love to study, to travel and to meet people. I use to live the life in a balanced and light way.

Blogs posts

Connect with me:

douglascardosom douglasdcm @douglas.dcm @testrock4634 douglas_morais

Languages and Tools:

azure bootstrap cassandra csharp css3 docker flask git heroku hive html5 jasmine java javascript jenkins jest kubernetes linux mocha mssql mysql oracle pandas postgresql postman python react scikit_learn selenium sqlite

douglasdcm

ย douglasdcm

douglasdcm

caqui's People

Contributors

douglasdcm avatar tomasserravento avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

caqui's Issues

Raise exceptions when element not found

Hey mate, how are you? I hope you are doing well!

I have this small suggestion: it would be amazing when an element is not found that an exception is being raised (such as Selenium does). It is quite annoying to have to check the returned string.

Im going to push soon swith_to additions!

Thanks for the amazing work!

Get attribute and cookies

Hi, how are you? First thank you for making this library. I have started using it yesterday and it works perfectly (and really fast).

While learning to use it I have encountered two things I would need (that maybe many people will also need):

  1. get_attribute method (which I added in #39 )
  2. get_cookies method (the equivalent of what I do with Selenium: driver.get_cookies() )

Do you know how to make number 2 a feature?

Thank you so much for this work!

Implement switch to an iFrame functionality

Hi @douglasdcm ,

I have been trying to migrate to your library and noticed that functionality to switch to an IFrame is missing.
Some pages just display other pages inside an iFrame and it would be very useful to access it.

Normally one can access an iFrame with the following code:
iframe = driver.find_elements(By.TAG_NAME, 'iframe')
driver.switch_to.frame(iframe[0])

I am not sure how to tackle this issue, so just wanted to let you know.

fix error in firefox

tests/test_sniffer.py sssssssssssssssss                                                                                  [  8%]
tests/feature/test_sync_and_async.py .ss...ssss.............sss................................................          [ 47%]
tests/integration/test_async_scenarios.py .                                                                              [ 47%]
tests/integration/test_object_scenarios.py E                                                                             [ 48%]
tests/integration/test_sync_scenarios.py ....                                                                            [ 50%]
tests/unit/test_async_unit.py ...................................                                                        [ 68%]
tests/unit/test_by.py ........                                                                                           [ 72%]
tests/unit/test_helper.py ....                                                                                           [ 75%]
tests/unit/test_objects.py EEEEEEEEEEEEEE                                                                                [ 82%]
tests/unit/test_sync_unit.py ..................................                                                          [100%]

Question about headless session

Hey, @douglasdcm , I have a question that maybe you know the answer.

Im trying to create a session which wont open a google chrome tab in my computer. Do you know how can I make this with caqui?

Actually with Selenium I need to do this:
``
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless") # Agregar argumento para ejecutar en modo headless

driver = webdriver.Chrome(options=options)
``

Thanks a lot!

Implement methods from Webdriver W3C

Method URI Template Command
  • POST | /session | New Session
  • DELETE | /session/{session id} | Delete Session
  • GET | /status | Status
  • GET | /session/{session id}/timeouts | Get Timeouts
  • POST | /session/{session id}/timeouts | Set Timeouts
  • POST | /session/{session id}/url | Navigate To
  • GET | /session/{session id}/url | Get Current URL
  • POST | /session/{session id}/back | Back
  • POST | /session/{session id}/forward | Forward
  • POST | /session/{session id}/refresh | Refresh
  • GET | /session/{session id}/title | Get Title
  • GET | /session/{session id}/window | Get Window Handle
  • DELETE | /session/{session id}/window | Close Window
  • POST | /session/{session id}/window | Switch To Window
  • GET | /session/{session id}/window/handles | Get Window Handles
  • POST | /session/{session id}/window/new | New Window
  • POST | /session/{session id}/frame | Switch To Frame
  • POST | /session/{session id}/frame/parent | Switch To Parent Frame
  • GET | /session/{session id}/window/rect | Get Window Rect
  • POST | /session/{session id}/window/rect | Set Window Rect
  • POST | /session/{session id}/window/maximize | Maximize Window
  • POST | /session/{session id}/window/minimize | Minimize Window
  • POST | /session/{session id}/window/fullscreen | Fullscreen Window
  • GET | /session/{session id}/element/active | Get Active Element
  • GET | /session/{session id}/element/{element id}/shadow | Get Element Shadow Root
  • POST | /session/{session id}/element | Find Element
  • POST | /session/{session id}/elements | Find Elements
  • POST | /session/{session id}/element/{element id}/element | Find Element From Element
  • POST | /session/{session id}/element/{element id}/elements | Find Elements From Element
  • POST | /session/{session id}/shadow/{shadow id}/element | Find Element From Shadow Root
  • POST | /session/{session id}/shadow/{shadow id}/elements | Find Elements From Shadow Root
  • GET | /session/{session id}/element/{element id}/selected | Is Element Selected
  • GET | /session/{session id}/element/{element id}/attribute/{name} | Get Element Attribute
  • GET | /session/{session id}/element/{element id}/property/{name} | Get Element Property
  • GET | /session/{session id}/element/{element id}/css/{property name} | Get Element CSS Value
  • GET | /session/{session id}/element/{element id}/text | Get Element Text
  • GET | /session/{session id}/element/{element id}/name | Get Element Tag Name
  • GET | /session/{session id}/element/{element id}/rect | Get Element Rect
  • GET | /session/{session id}/element/{element id}/enabled | Is Element Enabled
  • GET | /session/{session id}/element/{element id}/computedrole | Get Computed Role
  • GET | /session/{session id}/element/{element id}/computedlabel | Get Computed Label
  • POST | /session/{session id}/element/{element id}/click | Element Click
  • POST | /session/{session id}/element/{element id}/clear | Element Clear
  • POST | /session/{session id}/element/{element id}/value | Element Send Keys
  • GET | /session/{session id}/source | Get Page Source
  • POST | /session/{session id}/execute/sync | Execute Script
  • POST | /session/{session id}/execute/async | Execute Async Script
  • GET | /session/{session id}/cookie | Get All Cookies
  • GET | /session/{session id}/cookie/{name} | Get Named Cookie
  • POST | /session/{session id}/cookie | Add Cookie
  • DELETE | /session/{session id}/cookie/{name} | Delete Cookie
  • DELETE | /session/{session id}/cookie | Delete All Cookies
  • POST | /session/{session id}/actions | Perform Actions
  • DELETE | /session/{session id}/actions | Release Actions
  • POST | /session/{session id}/alert/dismiss | Dismiss Alert
  • POST | /session/{session id}/alert/accept | Accept Alert
  • GET | /session/{session id}/alert/text | Get Alert Text
  • POST | /session/{session id}/alert/text | Send Alert Text
  • GET | /session/{session id}/screenshot | Take Screenshot
  • GET | /session/{session id}/element/{element id}/screenshot | Take Element Screenshot
  • POST | /session/{session id}/print | Print Page

Method URI Template Command
POST /session New Session
DELETE /session/{session id} Delete Session
GET /status Status
GET /session/{session id}/timeouts Get Timeouts
POST /session/{session id}/timeouts Set Timeouts
POST /session/{session id}/url Navigate To
GET /session/{session id}/url Get Current URL
POST /session/{session id}/back Back
POST /session/{session id}/forward Forward
POST /session/{session id}/refresh Refresh
GET /session/{session id}/title Get Title
GET /session/{session id}/window Get Window Handle
DELETE /session/{session id}/window Close Window
POST /session/{session id}/window Switch To Window
GET /session/{session id}/window/handles Get Window Handles
POST /session/{session id}/window/new New Window
POST /session/{session id}/frame Switch To Frame
POST /session/{session id}/frame/parent Switch To Parent Frame
GET /session/{session id}/window/rect Get Window Rect
POST /session/{session id}/window/rect Set Window Rect
POST /session/{session id}/window/maximize Maximize Window
POST /session/{session id}/window/minimize Minimize Window
POST /session/{session id}/window/fullscreen Fullscreen Window
GET /session/{session id}/element/active Get Active Element
GET /session/{session id}/element/{element id}/shadow Get Element Shadow Root
POST /session/{session id}/element Find Element
POST /session/{session id}/elements Find Elements
POST /session/{session id}/element/{element id}/element Find Element From Element
POST /session/{session id}/element/{element id}/elements Find Elements From Element
POST /session/{session id}/shadow/{shadow id}/element Find Element From Shadow Root
POST /session/{session id}/shadow/{shadow id}/elements Find Elements From Shadow Root
GET /session/{session id}/element/{element id}/selected Is Element Selected
GET /session/{session id}/element/{element id}/attribute/{name} Get Element Attribute
GET /session/{session id}/element/{element id}/property/{name} Get Element Property
GET /session/{session id}/element/{element id}/css/{property name} Get Element CSS Value
GET /session/{session id}/element/{element id}/text Get Element Text
GET /session/{session id}/element/{element id}/name Get Element Tag Name
GET /session/{session id}/element/{element id}/rect Get Element Rect
GET /session/{session id}/element/{element id}/enabled Is Element Enabled
GET /session/{session id}/element/{element id}/computedrole Get Computed Role
GET /session/{session id}/element/{element id}/computedlabel Get Computed Label
POST /session/{session id}/element/{element id}/click Element Click
POST /session/{session id}/element/{element id}/clear Element Clear
POST /session/{session id}/element/{element id}/value Element Send Keys
GET /session/{session id}/source Get Page Source
POST /session/{session id}/execute/sync Execute Script
POST /session/{session id}/execute/async Execute Async Script
GET /session/{session id}/cookie Get All Cookies
GET /session/{session id}/cookie/{name} Get Named Cookie
POST /session/{session id}/cookie Add Cookie
DELETE /session/{session id}/cookie/{name} Delete Cookie
DELETE /session/{session id}/cookie Delete All Cookies
POST /session/{session id}/actions Perform Actions
DELETE /session/{session id}/actions Release Actions
POST /session/{session id}/alert/dismiss Dismiss Alert
POST /session/{session id}/alert/accept Accept Alert
GET /session/{session id}/alert/text Get Alert Text
POST /session/{session id}/alert/text Send Alert Text
GET /session/{session id}/screenshot Take Screenshot
GET /session/{session id}/element/{element id}/screenshot Take Element Screenshot
POST /session/{session id}/print Print Page

reference: https://www.w3.org/TR/webdriver/#endpoints #7

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.