SlideShare a Scribd company logo
1 of 21
Автоматизація
тестування з
допомогоюSelenium
Марина Мельниченко
Junior QC Engineer SoftServe
Про що
поговоримо
 Selenium
 Компоненти Selenium
 Робота з Selenium IDE
Selenium – безкоштовний (open source) набір утиліт для
автоматизації тестування веб-аплікацій в різних браузерах і на
різних платформах.
Був створений Джейсоном Хаггісом в 2004 році, в 2008 з`явився
Selenium2.
Знайомство з
Selenium
Компоненти
Selenium
Selenium Suite
Selenium IDE Selenium RC
Selenium
WebDriver
Selenium
Grid
Selenium2
Selenium
Integrated
Development
Environment
Переваги
1. Дуже легко
встановлювати і
видаляти
2. Не потребує досвіду в
програмуванні
3. Може експортувати
тести в формати, які
використовуються
Selenium RC і
WebDriver
4. Має вбудований
модуль виводу
тестових результатів
5. Надає підтримку
розширень
Недоліки
1. Доступний тільки в
Firefox
2. Розроблений для
створення простих
кейсів
3. Не підтримує ітерації і
умовні операції
4. Виконання тестів
повільне в порівнянні з
Selenium RC та
WebDriver
Selenium
Remote
Control
Переваги
1. Кросс-браузерний і
кросс-платформенний
2. Підтримує цикли і
умовні операції
3. Підтримує data-driven
тестування
4. Має АРІ
5. Швидший, ніж IDE
Недоліки
1. Інсталяція складніша,
ніж в IDE
2. Потребує знань
програмування
3. Вимагає запущеного
RC Server
4. Повільніший, ніж
WebDriver
Selenium
WebDriver
Переваги
1. Легше інсталювати,
ніж Selenium RC
2. Звертається напряму
до браузера
3. Не потребує інших
компонентів, таких як
RC Server
4. Швидший, ніж IDE та
RC
Недоліки
1. Інсталяція складніша,
ніж в IDE
2. Потребує знань
програмування
3. Не має вбудованого
механізму генерування
результатів тестів
SeleniumGrid
Особливості
1. Дозволяє одночасно
запускати тести в
різних браузерах та
середовищах
2. Значно економить час
Selenium IDE
Selenium IDE
Типи команд в
Selenium IDE
Actions:
- open
- type
- click
Accessors:
- storeTitle
Assertions:
- assert
- verify
- waitFor
Локатори
 ID
 Name
 CSS Selector
 Tag and ID
 Tag and class
 Tag and attribute
 Tag, class and attribute
 Inner text
 XPath
 LinkText
 DOM
Locating by ID
Locating by
Name
Locating by
CSSSelector
Tag and ID
Tag and Class
Tag and Attribute
InnerText
Locating by
XPath
Locating by
LinkText
Tips and tricks
Інтеграція в
WebDriver
 # -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
class 12(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://www.google.com.ua/"
self.verificationErrors = []
self.accept_next_alert = True
def test_12(self):
driver = self.driver
driver.get(self.base_url + "/?gfe_rd=cr&ei=6Ee-
VvLED8GWwAP475fACg&gws_rd=ssl")
# ERROR: Caught exception [unknown command []]
driver.find_element_by_link_text("Selenium - Web Browser
Automation").click()
driver.find_element_by_link_text("Projects").click()
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException as e: return False
return True
def is_alert_present(self):
try: self.driver.switch_to_alert()
except NoAlertPresentException as e: return False
return True
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
If __name__ == "__main__": unittest.main()
Questions
Дякую за увагу

More Related Content

Similar to IT Talks Автоматизація тестування з допомогою Selenium

12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...Igor Bronovskyy
 
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.Elantix
 
Микола Солопій "Selenium рулить, однак..."
Микола Солопій "Selenium рулить, однак..."Микола Солопій "Selenium рулить, однак..."
Микола Солопій "Selenium рулить, однак..."Dakiry
 
Aspnet core
Aspnet coreAspnet core
Aspnet coreeleksdev
 
Anton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQAnton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQDakiry
 
Caliburn Micro Overview
Caliburn Micro OverviewCaliburn Micro Overview
Caliburn Micro OverviewKiev ALT.NET
 
Continious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаContinious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаHRdepartment
 
СЕРГІЙ БРИТ «Selenide + Playwright = unite and rule» Online QADay 2022 #2
СЕРГІЙ БРИТ «Selenide + Playwright = unite and rule» Online QADay 2022 #2СЕРГІЙ БРИТ «Selenide + Playwright = unite and rule» Online QADay 2022 #2
СЕРГІЙ БРИТ «Selenide + Playwright = unite and rule» Online QADay 2022 #2GoQA
 
Lec12 користувацькi елементи керування ed
Lec12 користувацькi елементи керування edLec12 користувацькi елементи керування ed
Lec12 користувацькi елементи керування edcit-cit
 
System programing module 1
System programing module 1System programing module 1
System programing module 1Andrii Hladkyi
 
Тестування Програмного Забезпечення на Практиці - Червень 2014
Тестування Програмного Забезпечення на Практиці - Червень 2014Тестування Програмного Забезпечення на Практиці - Червень 2014
Тестування Програмного Забезпечення на Практиці - Червень 2014QualityAssuranceGroup
 
.NET Platform. C# Basics
.NET Platform. C# Basics.NET Platform. C# Basics
.NET Platform. C# Basicseleksdev
 
Net framework і c# module 10
Net framework і c# module 10Net framework і c# module 10
Net framework і c# module 10Andrii Hladkyi
 
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...GoQA
 
Php unit. Y. Muzychushun
Php unit. Y. MuzychushunPhp unit. Y. Muzychushun
Php unit. Y. MuzychushunHRdepartment
 

Similar to IT Talks Автоматизація тестування з допомогою Selenium (20)

12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
 
cpp-2013 #20 Best practices
cpp-2013 #20 Best practicescpp-2013 #20 Best practices
cpp-2013 #20 Best practices
 
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.
 
Микола Солопій "Selenium рулить, однак..."
Микола Солопій "Selenium рулить, однак..."Микола Солопій "Selenium рулить, однак..."
Микола Солопій "Selenium рулить, однак..."
 
Aspnet core
Aspnet coreAspnet core
Aspnet core
 
Anton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQAnton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQ
 
1111
11111111
1111
 
Caliburn Micro Overview
Caliburn Micro OverviewCaliburn Micro Overview
Caliburn Micro Overview
 
Continious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаContinious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій Галушка
 
СЕРГІЙ БРИТ «Selenide + Playwright = unite and rule» Online QADay 2022 #2
СЕРГІЙ БРИТ «Selenide + Playwright = unite and rule» Online QADay 2022 #2СЕРГІЙ БРИТ «Selenide + Playwright = unite and rule» Online QADay 2022 #2
СЕРГІЙ БРИТ «Selenide + Playwright = unite and rule» Online QADay 2022 #2
 
Lec12 користувацькi елементи керування ed
Lec12 користувацькi елементи керування edLec12 користувацькi елементи керування ed
Lec12 користувацькi елементи керування ed
 
System programing module 1
System programing module 1System programing module 1
System programing module 1
 
Design patterns part 2
Design patterns part 2Design patterns part 2
Design patterns part 2
 
Тестування Програмного Забезпечення на Практиці - Червень 2014
Тестування Програмного Забезпечення на Практиці - Червень 2014Тестування Програмного Забезпечення на Практиці - Червень 2014
Тестування Програмного Забезпечення на Практиці - Червень 2014
 
Tdd, ти де?
Tdd, ти де?Tdd, ти де?
Tdd, ти де?
 
.NET Platform. C# Basics
.NET Platform. C# Basics.NET Platform. C# Basics
.NET Platform. C# Basics
 
Net framework і c# module 10
Net framework і c# module 10Net framework і c# module 10
Net framework і c# module 10
 
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
 
Php unit. Y. Muzychushun
Php unit. Y. MuzychushunPhp unit. Y. Muzychushun
Php unit. Y. Muzychushun
 
Design patterns part 1
Design patterns part 1Design patterns part 1
Design patterns part 1
 

More from Vadym Muliavka

Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT TalksMykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT TalksVadym Muliavka
 
Roman Valchuk "Introducing to DevOps technologies"
Roman Valchuk "Introducing to DevOps technologies"Roman Valchuk "Introducing to DevOps technologies"
Roman Valchuk "Introducing to DevOps technologies"Vadym Muliavka
 
IT Talks "VR Tips for Engineers and Developers"
IT Talks "VR Tips for Engineers and Developers"IT Talks "VR Tips for Engineers and Developers"
IT Talks "VR Tips for Engineers and Developers"Vadym Muliavka
 
Rivne IT Talks How to programa Quantum Computer?
Rivne IT Talks How to programa Quantum Computer?Rivne IT Talks How to programa Quantum Computer?
Rivne IT Talks How to programa Quantum Computer?Vadym Muliavka
 
IT Talks The approach for solving impossible tasks (dynamic programming)
IT Talks The approach for solving impossible tasks (dynamic programming)IT Talks The approach for solving impossible tasks (dynamic programming)
IT Talks The approach for solving impossible tasks (dynamic programming)Vadym Muliavka
 
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthIT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthVadym Muliavka
 
Bug reporting and tracking
Bug reporting and trackingBug reporting and tracking
Bug reporting and trackingVadym Muliavka
 
Boundary value analysis
Boundary value analysisBoundary value analysis
Boundary value analysisVadym Muliavka
 
Equivalence partitions analysis
Equivalence partitions analysisEquivalence partitions analysis
Equivalence partitions analysisVadym Muliavka
 
IT Talks Тестування та аналіз вимог
IT Talks Тестування та аналіз вимогIT Talks Тестування та аналіз вимог
IT Talks Тестування та аналіз вимогVadym Muliavka
 
IT Talks QA - якість процесів розробки
IT Talks QA - якість процесів розробкиIT Talks QA - якість процесів розробки
IT Talks QA - якість процесів розробкиVadym Muliavka
 

More from Vadym Muliavka (11)

Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT TalksMykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
 
Roman Valchuk "Introducing to DevOps technologies"
Roman Valchuk "Introducing to DevOps technologies"Roman Valchuk "Introducing to DevOps technologies"
Roman Valchuk "Introducing to DevOps technologies"
 
IT Talks "VR Tips for Engineers and Developers"
IT Talks "VR Tips for Engineers and Developers"IT Talks "VR Tips for Engineers and Developers"
IT Talks "VR Tips for Engineers and Developers"
 
Rivne IT Talks How to programa Quantum Computer?
Rivne IT Talks How to programa Quantum Computer?Rivne IT Talks How to programa Quantum Computer?
Rivne IT Talks How to programa Quantum Computer?
 
IT Talks The approach for solving impossible tasks (dynamic programming)
IT Talks The approach for solving impossible tasks (dynamic programming)IT Talks The approach for solving impossible tasks (dynamic programming)
IT Talks The approach for solving impossible tasks (dynamic programming)
 
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthIT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depth
 
Bug reporting and tracking
Bug reporting and trackingBug reporting and tracking
Bug reporting and tracking
 
Boundary value analysis
Boundary value analysisBoundary value analysis
Boundary value analysis
 
Equivalence partitions analysis
Equivalence partitions analysisEquivalence partitions analysis
Equivalence partitions analysis
 
IT Talks Тестування та аналіз вимог
IT Talks Тестування та аналіз вимогIT Talks Тестування та аналіз вимог
IT Talks Тестування та аналіз вимог
 
IT Talks QA - якість процесів розробки
IT Talks QA - якість процесів розробкиIT Talks QA - якість процесів розробки
IT Talks QA - якість процесів розробки
 

Recently uploaded

"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 
Тестування Blockchain - Що там можна тестувати?
Тестування  Blockchain - Що там можна тестувати?Тестування  Blockchain - Що там можна тестувати?
Тестування Blockchain - Що там можна тестувати?Oleksandr Romanov
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...Fwdays
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 

Recently uploaded (6)

"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
Тестування Blockchain - Що там можна тестувати?
Тестування  Blockchain - Що там можна тестувати?Тестування  Blockchain - Що там можна тестувати?
Тестування Blockchain - Що там можна тестувати?
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 

IT Talks Автоматизація тестування з допомогою Selenium

  • 2. Про що поговоримо  Selenium  Компоненти Selenium  Робота з Selenium IDE
  • 3. Selenium – безкоштовний (open source) набір утиліт для автоматизації тестування веб-аплікацій в різних браузерах і на різних платформах. Був створений Джейсоном Хаггісом в 2004 році, в 2008 з`явився Selenium2. Знайомство з Selenium
  • 4. Компоненти Selenium Selenium Suite Selenium IDE Selenium RC Selenium WebDriver Selenium Grid Selenium2
  • 5. Selenium Integrated Development Environment Переваги 1. Дуже легко встановлювати і видаляти 2. Не потребує досвіду в програмуванні 3. Може експортувати тести в формати, які використовуються Selenium RC і WebDriver 4. Має вбудований модуль виводу тестових результатів 5. Надає підтримку розширень Недоліки 1. Доступний тільки в Firefox 2. Розроблений для створення простих кейсів 3. Не підтримує ітерації і умовні операції 4. Виконання тестів повільне в порівнянні з Selenium RC та WebDriver
  • 6. Selenium Remote Control Переваги 1. Кросс-браузерний і кросс-платформенний 2. Підтримує цикли і умовні операції 3. Підтримує data-driven тестування 4. Має АРІ 5. Швидший, ніж IDE Недоліки 1. Інсталяція складніша, ніж в IDE 2. Потребує знань програмування 3. Вимагає запущеного RC Server 4. Повільніший, ніж WebDriver
  • 7. Selenium WebDriver Переваги 1. Легше інсталювати, ніж Selenium RC 2. Звертається напряму до браузера 3. Не потребує інших компонентів, таких як RC Server 4. Швидший, ніж IDE та RC Недоліки 1. Інсталяція складніша, ніж в IDE 2. Потребує знань програмування 3. Не має вбудованого механізму генерування результатів тестів
  • 8. SeleniumGrid Особливості 1. Дозволяє одночасно запускати тести в різних браузерах та середовищах 2. Значно економить час
  • 11. Типи команд в Selenium IDE Actions: - open - type - click Accessors: - storeTitle Assertions: - assert - verify - waitFor
  • 12. Локатори  ID  Name  CSS Selector  Tag and ID  Tag and class  Tag and attribute  Tag, class and attribute  Inner text  XPath  LinkText  DOM
  • 15. Locating by CSSSelector Tag and ID Tag and Class Tag and Attribute InnerText
  • 19. Інтеграція в WebDriver  # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import NoAlertPresentException import unittest, time, re class 12(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "https://www.google.com.ua/" self.verificationErrors = [] self.accept_next_alert = True def test_12(self): driver = self.driver driver.get(self.base_url + "/?gfe_rd=cr&ei=6Ee- VvLED8GWwAP475fACg&gws_rd=ssl") # ERROR: Caught exception [unknown command []] driver.find_element_by_link_text("Selenium - Web Browser Automation").click() driver.find_element_by_link_text("Projects").click() def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException as e: return False return True def is_alert_present(self): try: self.driver.switch_to_alert() except NoAlertPresentException as e: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() alert_text = alert.text if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert_text finally: self.accept_next_alert = True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) If __name__ == "__main__": unittest.main()