SlideShare a Scribd company logo
@yashaka 01.2017
easy_automation.py
Plan
Intro
Live Coding Session
Easy Automation Tools Retrospective
Q&A
Why Automation?
Testing
=
Assessing Quality
Effective Testing
=>
Assessing Quality
0
50
100
150
200
Automation
=
Automating manual routine work
Effective Testing
*=
Testing with automated routine
work
Automation!
But, it’s hard, no?
no:p
Coding Session
https://github.com/yashaka/talks/tree/master/easy-automation-py
Summary
Coverage Styles
End to End style
+ more coverage in
less time with less
efforts during
implementation
+ integration coverage
Unit/One-feature-per-test
style
+ in case of bugs, gives
more complete report
+ easier to identify reason
from the report
=>
+ less time and efforts in
support
How many => => Only:
+ functional
high priority
use cases
Avoid => => No
- style checks
- low priority test cases
(that user will not do
on regular basis)
- additional requirements,
like “different kind of names
for entities”
<=
Implementing Automation
• Project in progress, no Automation?
1. start with End To End style smoke integration
tests
2. review and test plan
3. cover with “One feature”/“Unit” style
independent tests
Implementing Automation
• Project just started and Auto-POC is approved OR
ready features are automated?
1. Test plan new features
2. Cover with “One feature”/“Unit” style
independent tests
3. Add End to End integration smoke tests
Wasn’t it Easy? :)
Of course, “Automation is Easy” is a semi-truth
but the devil is not so black as he is painted;)
How to start?
• Choose language
• Learn language (interactive tutorials, koans,
exercism.io/checkio.org, learnxinyminutes.com,
books, etc.)
• Choose Easy Tools
• Find a mentor (friend, dev on your project, chat,
etc…)
• Go :)
Choose language?
• Have project?
• choose language of project’s developers
• Have no project but want to find work fast?
• choose one of the most popular language
• Have no project but want to code in your style, and it
does not matter how long will you seek for the job?
• choose language that fits you
Learn language?
Google :p
interactive tutorials + koans + exercism.io +
docs.seleniumhq.org + google.com
=
“You can do this in any language.”
Easy Tools?
• Just a few examples…
• Python: Selene
• C#: NSelene
• Java: Selenide
• Ruby: Capybara
tasks = ss("#todo-list>li")



...
def toggle(task_text):



tasks.element_by(have.exact_text(task_text)).element(“.toggle”).click()





def should_be(*task_texts):



tasks.filtered_by(be.visible).should(have.exact_texts(*task_texts))
public class Tasks {



public static ElementsCollection tasks = $$("#todo-list>li");



...


public static void toggle(String taskText) {


tasks.findBy(exactText(taskText)).find(".toggle").click();

}



public static void shouldBe(String ... taskTexts) {


tasks.filterBy(visible).shouldHave(exactTexts(taskTexts));

}

}
public static class Tasks

{

public static SCollection List = SS("#todo-list>li"); 



...



public static void Toggle (string taskText)

{

List.FindBy(Have.ExactText(taskText)).Find(".toggle").Click();

}



public static void ShouldBe(params string [] names)
{

List.FilterBy(Be.Visible).Should(Have.Texts(names));

}

}
module Tasks

extend Capybara ::DSL



def self.tasks

all "#todo-list>li"

end


...

def self.toggle task_text


(tasks.findBy {|task| task.text == task_text}).find(".toggle").click

end



def self.should_be *task_texts


tasks.texts.should == task_texts

end

end
= ?Easy Tool
= ?Selene
= …
web automation tool
…
Selene
= …
web automation tool
selenium wrapper
Selene
= …
web automation tool
selenium wrapper
Selene
= Effective
web test automation tool
Selene
= Effective
web test automation tool
being also
selenium wrapper
Selene
= Effective
web test automation tool
=
?
Selene
= Effective
web test automation tool
=
tool to automate
web UI tests logic
Selene
= Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
Selene
= Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
(it should be already automated;)
Selene
= Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
Selene
concise API
…
…
…
…
= Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
Selene
concise API
waiting search
…
…
…
= Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
Selene
concise API
waiting search
waiting asserts
…
…
= Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
concise API
waiting search
waiting asserts
dynamic elements
…
Selene
= Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
Selene
concise API
waiting search
waiting asserts
dynamic elements
informative errors
Selene = Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
concise API
waiting search
waiting asserts
dynamic elements
informative errors
“UI Tests Logic” Automation with Selene
class TestTodoMVC(object):

def test_filter_active_tasks(self):



# visit page


# add "a"
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic


# visit page


# add "a"
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic


visit("https: //todomvc4tasj.herokuapp.com/")


# add "a"
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
Concise API


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
Automatic Driver Management


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
Concise API
search element “short-cut”


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
Concise API
default conversion to “by css” locator


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
Concise API
with implicit clear()


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
Concise API
chainable methods


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
Dynamic Elements
search actually starts here


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
# add "b"
# add "c"

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
Waiting Search
with implicit waiting for visibility


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
s("#new-todo").set("b").press_enter()
s("#new-todo").set("c").press_enter()

# tasks should be "a", "b", "c"



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
UI Tests Logic
Waiting Asserts
aka “explicit waits”


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
s("#new-todo").set("b").press_enter()
s("#new-todo").set("c").press_enter()

ss("#todo-list li").should(have.exact_texts("a", "b", "c"))



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
handy conditions
Waiting Asserts


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
s("#new-todo").set("b").press_enter()
s("#new-todo").set("c").press_enter()

ss("#todo-list li”).should(have.texts(“a", "b", "c"))



# toggle "b"



# filter active

# tasks should be "a", "c"


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
s("#new-todo").set("b").press_enter()
s("#new-todo").set("c").press_enter()

ss("#todo-list li”).should(have.texts("a.", "b.", "c."))



# toggle "b"



# filter active

# tasks should be "a", "c"
UI Tests Logic
Informative errors
E TimeoutException: Message:
E failed while waiting 4 seconds
E to assert ExactTexts
E for all_by('css selector', '#todo-list li')
E
E reason: ConditionMismatchException: condition did not match
E expected: ('a.', 'b.', 'c.')
E actual: ['a', 'b', 'c']
E screenshot: /Users/ayia/.selene/screenshots/1484695102265/screen_1484695102266.png
UI Tests Logic
instead of bulky xpath locators
inner element search
Concise API & Waiting Search


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
s("#new-todo").set("b").press_enter()
s("#new-todo").set("c").press_enter()

ss("#todo-list li”).should(have.texts("a", "b", "c"))



ss("#todo-list li”).element_by(have.text(“b")).element(".toggle").click()



# filter active

# tasks should be "a", "c"
laconic inner collection
search by text
UI Tests Logic
custom locators


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
s("#new-todo").set("b").press_enter()
s("#new-todo").set("c").press_enter()

ss("#todo-list li”).should(have.texts(“a", "b", "c"))



ss("#todo-list li”).element_by(have.text(“b")).element(".toggle").click()



s(by.link_text("Active")).click()

# tasks should be "a", "c"
UI Tests Logic
Concise API & Waiting Asserts
filtering collection


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
s("#new-todo").set("b").press_enter()
s("#new-todo").set("c").press_enter()

ss("#todo-list li”).should(have.texts(“a", "b", "c"))



ss("#todo-list li").element_by(have.text("b")).element(".toggle").click()



s(by.link_text("Active")).click()

tasks.filtered_by(be.visible).should(have.texts(“a”, "c"))
UI Tests Logic


visit("https: //todomvc4tasj.herokuapp.com/")


s("#new-todo").set("a").press_enter()
s("#new-todo").set("b").press_enter()
s("#new-todo").set("c").press_enter()

ss("#todo-list li").should_have(texts("a", "b", "c"))



ss("#todo-list li").element_by(have.text("b")).element(".toggle").click()



s(by.link_text("Active")).click()

tasks.filtered_by(be.visible).should(have.texts("a", "c"))
Page steps for even
more readable code?
#tasks.py
def visit():

tools.visit("https: //todomvc4tasj.herokuapp.com/")

def add(*task_texts):

for text in task_texts:
s("#new-todo").set(text).press_enter()



def filter_active():

s(by.link_text("Active")).click()



def filter_completed():

s(by.link_text("Completed")).click()
#tasks.py
tasks = ss("#todo-list>li")



...
def toggle(task_text):

tasks.element_by(have.text(task_text)).element(".toggle").click()





def should_be(*task_texts):

tasks.filtered_by(be.visible).should(have.texts(*task_texts))
tasks = ss("#todo-list>li")



...
Dynamic Elements
possible because search does not start here
in fact, ss creates “lazy elements proxy” aka “elements lazy finder”;)
class TestTodoMVC(object):



def test_filter_tasks(self):



tasks.visit()



tasks.add("a", "b", "c")

tasks.should_be("a", "b", "c")



tasks.toggle("b")



tasks.filter_active ()

tasks.should_be("a", "c")



tasks.filter_completed ()

tasks.should_be("b")
Customisation
config.browser_name = "chrome"
...
or
config.browser_name = Browser.CHROME
...
will use “firefox” by default
config.app_host = "http: //mydomain.com"
...
visit("/subpage")
s(“#new-todo”).should(be.enabled)
Default Timeouts Behaviour
will wait until 4 seconds
s(“#new-todo”).should(be.enabled, timeout=10)
Custom
or
config.timeout = 10
...
s(“#new-todo”).should(be.enabled)
No Tool for your language?
No Tool for your language?
• Have project?
• ask project’s developers to write it for you
• Have no project and lack of knowledge?
• switch to language that has easy tools :)
• Brave?
• implement it by your own ;)
Remember…
• Automation is NOT a separate Role
• Automation IS A TOOL for Test Engineer to do his
work effectively
Q&A
Thank you!
@yashaka 01.2017
github.com/automician
automician.com
seleniumcourses.com
yashaka @

More Related Content

What's hot

Better Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternBetter Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component Pattern
SQALab
 
Automation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and BeyondAutomation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and Beyond
TechWell
 
Selenium - The page object pattern
Selenium - The page object patternSelenium - The page object pattern
Selenium - The page object pattern
Michael Palotas
 
KISS Automation.py
KISS Automation.pyKISS Automation.py
KISS Automation.py
Iakiv Kramarenko
 
Lets make a better react form
Lets make a better react formLets make a better react form
Lets make a better react form
Yao Nien Chung
 
Gems Of Selenium
Gems Of SeleniumGems Of Selenium
Gems Of Selenium
Skills Matter
 
Enhance react app with patterns - part 1: higher order component
Enhance react app with patterns - part 1: higher order componentEnhance react app with patterns - part 1: higher order component
Enhance react app with patterns - part 1: higher order component
Yao Nien Chung
 
Automated Testing in Angular Slides
Automated Testing in Angular SlidesAutomated Testing in Angular Slides
Automated Testing in Angular Slides
Jim Lynch
 
Selenium withnet
Selenium withnetSelenium withnet
Selenium withnetVlad Maniak
 
Hands on Exploration of Page Objects and Abstraction Layers with Selenium Web...
Hands on Exploration of Page Objects and Abstraction Layers with Selenium Web...Hands on Exploration of Page Objects and Abstraction Layers with Selenium Web...
Hands on Exploration of Page Objects and Abstraction Layers with Selenium Web...
Alan Richardson
 
APIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page ObjectsAPIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page Objects
Sauce Labs
 
Use React Patterns to Build Large Scalable App
Use React Patterns to Build Large Scalable App Use React Patterns to Build Large Scalable App
Use React Patterns to Build Large Scalable App
Yao Nien Chung
 
Page object pattern
Page object patternPage object pattern
Page object pattern
Petro Konopelko
 
Automation Abstraction Layers: Page Objects and Beyond
Automation Abstraction Layers: Page Objects and BeyondAutomation Abstraction Layers: Page Objects and Beyond
Automation Abstraction Layers: Page Objects and Beyond
Alan Richardson
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend Testing
Neil Crosby
 
Test automation & Seleniun by oren rubin
Test automation & Seleniun by oren rubinTest automation & Seleniun by oren rubin
Test automation & Seleniun by oren rubin
Oren Rubin
 
My Test Automation Journey
My Test Automation JourneyMy Test Automation Journey
My Test Automation Journey
Vaidas Pilkauskas
 
Webdriver cheatsheets summary
Webdriver cheatsheets summaryWebdriver cheatsheets summary
Webdriver cheatsheets summary
Alan Richardson
 
Front-End Testing: Demystified
Front-End Testing: DemystifiedFront-End Testing: Demystified
Front-End Testing: Demystified
Seth McLaughlin
 
Page Objects Done Right - selenium conference 2014
Page Objects Done Right - selenium conference 2014Page Objects Done Right - selenium conference 2014
Page Objects Done Right - selenium conference 2014
Oren Rubin
 

What's hot (20)

Better Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternBetter Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component Pattern
 
Automation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and BeyondAutomation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and Beyond
 
Selenium - The page object pattern
Selenium - The page object patternSelenium - The page object pattern
Selenium - The page object pattern
 
KISS Automation.py
KISS Automation.pyKISS Automation.py
KISS Automation.py
 
Lets make a better react form
Lets make a better react formLets make a better react form
Lets make a better react form
 
Gems Of Selenium
Gems Of SeleniumGems Of Selenium
Gems Of Selenium
 
Enhance react app with patterns - part 1: higher order component
Enhance react app with patterns - part 1: higher order componentEnhance react app with patterns - part 1: higher order component
Enhance react app with patterns - part 1: higher order component
 
Automated Testing in Angular Slides
Automated Testing in Angular SlidesAutomated Testing in Angular Slides
Automated Testing in Angular Slides
 
Selenium withnet
Selenium withnetSelenium withnet
Selenium withnet
 
Hands on Exploration of Page Objects and Abstraction Layers with Selenium Web...
Hands on Exploration of Page Objects and Abstraction Layers with Selenium Web...Hands on Exploration of Page Objects and Abstraction Layers with Selenium Web...
Hands on Exploration of Page Objects and Abstraction Layers with Selenium Web...
 
APIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page ObjectsAPIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page Objects
 
Use React Patterns to Build Large Scalable App
Use React Patterns to Build Large Scalable App Use React Patterns to Build Large Scalable App
Use React Patterns to Build Large Scalable App
 
Page object pattern
Page object patternPage object pattern
Page object pattern
 
Automation Abstraction Layers: Page Objects and Beyond
Automation Abstraction Layers: Page Objects and BeyondAutomation Abstraction Layers: Page Objects and Beyond
Automation Abstraction Layers: Page Objects and Beyond
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend Testing
 
Test automation & Seleniun by oren rubin
Test automation & Seleniun by oren rubinTest automation & Seleniun by oren rubin
Test automation & Seleniun by oren rubin
 
My Test Automation Journey
My Test Automation JourneyMy Test Automation Journey
My Test Automation Journey
 
Webdriver cheatsheets summary
Webdriver cheatsheets summaryWebdriver cheatsheets summary
Webdriver cheatsheets summary
 
Front-End Testing: Demystified
Front-End Testing: DemystifiedFront-End Testing: Demystified
Front-End Testing: Demystified
 
Page Objects Done Right - selenium conference 2014
Page Objects Done Right - selenium conference 2014Page Objects Done Right - selenium conference 2014
Page Objects Done Right - selenium conference 2014
 

Viewers also liked

Write Selenide in Python 15 min
Write Selenide in Python 15 minWrite Selenide in Python 15 min
Write Selenide in Python 15 min
Iakiv Kramarenko
 
Automation is Easy! (python version)
Automation is Easy! (python version)Automation is Easy! (python version)
Automation is Easy! (python version)
Iakiv Kramarenko
 
Автотесты на уровне API для Java-приложений (SQA Days 14)
Автотесты на уровне API для Java-приложений (SQA Days 14)Автотесты на уровне API для Java-приложений (SQA Days 14)
Автотесты на уровне API для Java-приложений (SQA Days 14)
Olga Kiseleva
 
Самописный робот на Watin
Самописный робот на WatinСамописный робот на Watin
Самописный робот на Watin
Olga Kiseleva
 
Parasoft SOAtest
Parasoft SOAtestParasoft SOAtest
Parasoft SOAtest
SQALab
 
QA Fest 2016. Роман Горин. Введение в системы распознавания речи глазами тест...
QA Fest 2016. Роман Горин. Введение в системы распознавания речи глазами тест...QA Fest 2016. Роман Горин. Введение в системы распознавания речи глазами тест...
QA Fest 2016. Роман Горин. Введение в системы распознавания речи глазами тест...
QAFest
 
Кадры для ИТ-индустрии: найти и удержать
Кадры для ИТ-индустрии: найти и удержатьКадры для ИТ-индустрии: найти и удержать
Кадры для ИТ-индустрии: найти и удержатьSQALab
 
Appium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон СеменченкоAppium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон Семенченко
Alina Dolgikh
 
В чем проблема?
В чем проблема?В чем проблема?
В чем проблема?
SQALab
 
Better Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternBetter Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component Pattern
Sargis Sargsyan
 
Развитие в тестировании: включаем реактивный двигатель!
Развитие в тестировании: включаем реактивный двигатель!Развитие в тестировании: включаем реактивный двигатель!
Развитие в тестировании: включаем реактивный двигатель!
SQALab
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17
Igor Khrol
 
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшeQA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QAFest
 
Web testing with Selenium
Web testing with SeleniumWeb testing with Selenium
Web testing with Selenium
XBOSoft
 
Pivotal Failure - Lessons Learned from Lean Startup Machine DC
Pivotal Failure - Lessons Learned from Lean Startup Machine DCPivotal Failure - Lessons Learned from Lean Startup Machine DC
Pivotal Failure - Lessons Learned from Lean Startup Machine DCDave Haeffner
 
Continuous Testing Meets the Classroom at Code.org
Continuous Testing Meets the Classroom at Code.orgContinuous Testing Meets the Classroom at Code.org
Continuous Testing Meets the Classroom at Code.org
Sauce Labs
 

Viewers also liked (17)

Write Selenide in Python 15 min
Write Selenide in Python 15 minWrite Selenide in Python 15 min
Write Selenide in Python 15 min
 
Automation is Easy! (python version)
Automation is Easy! (python version)Automation is Easy! (python version)
Automation is Easy! (python version)
 
Автотесты на уровне API для Java-приложений (SQA Days 14)
Автотесты на уровне API для Java-приложений (SQA Days 14)Автотесты на уровне API для Java-приложений (SQA Days 14)
Автотесты на уровне API для Java-приложений (SQA Days 14)
 
Самописный робот на Watin
Самописный робот на WatinСамописный робот на Watin
Самописный робот на Watin
 
Parasoft SOAtest
Parasoft SOAtestParasoft SOAtest
Parasoft SOAtest
 
QA Fest 2016. Роман Горин. Введение в системы распознавания речи глазами тест...
QA Fest 2016. Роман Горин. Введение в системы распознавания речи глазами тест...QA Fest 2016. Роман Горин. Введение в системы распознавания речи глазами тест...
QA Fest 2016. Роман Горин. Введение в системы распознавания речи глазами тест...
 
Кадры для ИТ-индустрии: найти и удержать
Кадры для ИТ-индустрии: найти и удержатьКадры для ИТ-индустрии: найти и удержать
Кадры для ИТ-индустрии: найти и удержать
 
Appium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон СеменченкоAppium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон Семенченко
 
В чем проблема?
В чем проблема?В чем проблема?
В чем проблема?
 
Better Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternBetter Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component Pattern
 
Развитие в тестировании: включаем реактивный двигатель!
Развитие в тестировании: включаем реактивный двигатель!Развитие в тестировании: включаем реактивный двигатель!
Развитие в тестировании: включаем реактивный двигатель!
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17
 
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшeQA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
 
Web testing with Selenium
Web testing with SeleniumWeb testing with Selenium
Web testing with Selenium
 
Pivotal Failure - Lessons Learned from Lean Startup Machine DC
Pivotal Failure - Lessons Learned from Lean Startup Machine DCPivotal Failure - Lessons Learned from Lean Startup Machine DC
Pivotal Failure - Lessons Learned from Lean Startup Machine DC
 
Continuous Testing Meets the Classroom at Code.org
Continuous Testing Meets the Classroom at Code.orgContinuous Testing Meets the Classroom at Code.org
Continuous Testing Meets the Classroom at Code.org
 
Selenium
SeleniumSelenium
Selenium
 

Similar to Easy automation.py

QA Fest 2015. Яков Крамаренко. Polyglot automation
QA Fest 2015. Яков Крамаренко. Polyglot automation QA Fest 2015. Яков Крамаренко. Polyglot automation
QA Fest 2015. Яков Крамаренко. Polyglot automation
QAFest
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
toddbr
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFX
Hendrik Ebbers
 
End-to-end testing with geb
End-to-end testing with gebEnd-to-end testing with geb
End-to-end testing with geb
Jesús L. Domínguez Muriel
 
Functional Testing for React Native Apps
Functional Testing for React Native AppsFunctional Testing for React Native Apps
Functional Testing for React Native Apps
K. Matthew Dupree
 
System insight without Interference
System insight without InterferenceSystem insight without Interference
System insight without Interference
Tony Tam
 
Node.js Development Workflow Automation with Grunt.js
Node.js Development Workflow Automation with Grunt.jsNode.js Development Workflow Automation with Grunt.js
Node.js Development Workflow Automation with Grunt.js
kiyanwang
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NET
Ben Hall
 
Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructure
Lindsay Holmwood
 
Java script unit testing
Java script unit testingJava script unit testing
Java script unit testing
Mats Bryntse
 
Interactive Kafka Streams
Interactive Kafka StreamsInteractive Kafka Streams
Interactive Kafka Streams
confluent
 
JavaScript Interview Questions Part - 1.pdf
JavaScript Interview Questions Part - 1.pdfJavaScript Interview Questions Part - 1.pdf
JavaScript Interview Questions Part - 1.pdf
katarichallenge
 
jQuery for web development
jQuery for web developmentjQuery for web development
jQuery for web development
iFour Institute - Sustainable Learning
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QAFest
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building AndroidDroidcon Berlin
 
Jest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRWJest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRW
Holger Grosse-Plankermann
 
CBDW2014 - MockBox, get ready to mock your socks off!
CBDW2014 - MockBox, get ready to mock your socks off!CBDW2014 - MockBox, get ready to mock your socks off!
CBDW2014 - MockBox, get ready to mock your socks off!
Ortus Solutions, Corp
 
Automated interactive testing for i os
Automated interactive testing for i osAutomated interactive testing for i os
Automated interactive testing for i os
Mobile March
 

Similar to Easy automation.py (20)

QA Fest 2015. Яков Крамаренко. Polyglot automation
QA Fest 2015. Яков Крамаренко. Polyglot automation QA Fest 2015. Яков Крамаренко. Polyglot automation
QA Fest 2015. Яков Крамаренко. Polyglot automation
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFX
 
End-to-end testing with geb
End-to-end testing with gebEnd-to-end testing with geb
End-to-end testing with geb
 
Functional Testing for React Native Apps
Functional Testing for React Native AppsFunctional Testing for React Native Apps
Functional Testing for React Native Apps
 
System insight without Interference
System insight without InterferenceSystem insight without Interference
System insight without Interference
 
Node.js Development Workflow Automation with Grunt.js
Node.js Development Workflow Automation with Grunt.jsNode.js Development Workflow Automation with Grunt.js
Node.js Development Workflow Automation with Grunt.js
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NET
 
Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructure
 
Java script unit testing
Java script unit testingJava script unit testing
Java script unit testing
 
Interactive Kafka Streams
Interactive Kafka StreamsInteractive Kafka Streams
Interactive Kafka Streams
 
JavaScript Interview Questions Part - 1.pdf
JavaScript Interview Questions Part - 1.pdfJavaScript Interview Questions Part - 1.pdf
JavaScript Interview Questions Part - 1.pdf
 
jQuery for web development
jQuery for web developmentjQuery for web development
jQuery for web development
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building Android
 
Jest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRWJest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRW
 
CBDW2014 - MockBox, get ready to mock your socks off!
CBDW2014 - MockBox, get ready to mock your socks off!CBDW2014 - MockBox, get ready to mock your socks off!
CBDW2014 - MockBox, get ready to mock your socks off!
 
JS Essence
JS EssenceJS Essence
JS Essence
 
Automated interactive testing for i os
Automated interactive testing for i osAutomated interactive testing for i os
Automated interactive testing for i os
 

Recently uploaded

UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 

Easy automation.py