ݺߣ

ݺߣShare a Scribd company logo
Автоматизація
тестування з
допомогою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
Дякую за увагу
Ad

Recommended

ОЛЕКСАНДР ХОТЕМСЬКИЙ «Як тестувати якість відеодзвінків?» Online QADay 2021 #2
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Як тестувати якість відеодзвінків?» Online QADay 2021 #2
QADay
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
Andrei Pugachev
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Чим ще SDET може розважити себе на проекті крім е2е тес...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Чим ще SDET може розважити себе на проекті крім е2е тес...
QADay
QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...
QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...
QAFest
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
QADay
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
Exoft LLC
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
Igor Bronovskyy
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
Igor Bronovskyy
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.
Elantix
Микола Солопій "Selenium рулить, однак..."
Микола Солопій "Selenium рулить, однак..."
Dakiry
Aspnet core
Aspnet core
eleksdev
Anton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQ
Dakiry
Igor Dumbur: Інженерна досконалість та DevOps(UA)
Igor Dumbur: Інженерна досконалість та DevOps(UA)
content75
Caliburn Micro Overview
Caliburn Micro Overview
Kiev ALT.NET
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
QADay
Lec12 користувацькi елементи керування ed
Lec12 користувацькi елементи керування ed
cit-cit
System programing module 1
System programing module 1
Andrii Hladkyi
Тестування Програмного Забезпечення на Практиці - Червень 2014
Тестування Програмного Забезпечення на Практиці - Червень 2014
QualityAssuranceGroup
Tdd, ти де?
Tdd, ти де?
Roman Mazur
.NET Platform. C# Basics
.NET Platform. C# Basics
eleksdev
Net framework і c# module 10
Net framework і c# module 10
Andrii Hladkyi
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
QADay
Php unit. Y. Muzychushun
Php unit. Y. Muzychushun
HRdepartment
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Vadym Muliavka
Roman Valchuk "Introducing to DevOps technologies"
Roman Valchuk "Introducing to DevOps technologies"
Vadym Muliavka

More Related Content

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

12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
Igor Bronovskyy
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.
Elantix
Микола Солопій "Selenium рулить, однак..."
Микола Солопій "Selenium рулить, однак..."
Dakiry
Aspnet core
Aspnet core
eleksdev
Anton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQ
Dakiry
Igor Dumbur: Інженерна досконалість та DevOps(UA)
Igor Dumbur: Інженерна досконалість та DevOps(UA)
content75
Caliburn Micro Overview
Caliburn Micro Overview
Kiev ALT.NET
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
QADay
Lec12 користувацькi елементи керування ed
Lec12 користувацькi елементи керування ed
cit-cit
System programing module 1
System programing module 1
Andrii Hladkyi
Тестування Програмного Забезпечення на Практиці - Червень 2014
Тестування Програмного Забезпечення на Практиці - Червень 2014
QualityAssuranceGroup
Tdd, ти де?
Tdd, ти де?
Roman Mazur
.NET Platform. C# Basics
.NET Platform. C# Basics
eleksdev
Net framework і c# module 10
Net framework і c# module 10
Andrii Hladkyi
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
QADay
Php unit. Y. Muzychushun
Php unit. Y. Muzychushun
HRdepartment
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
Igor Bronovskyy
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.
Elantix
Микола Солопій "Selenium рулить, однак..."
Микола Солопій "Selenium рулить, однак..."
Dakiry
Anton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQ
Dakiry
Igor Dumbur: Інженерна досконалість та DevOps(UA)
Igor Dumbur: Інженерна досконалість та DevOps(UA)
content75
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
QADay
Lec12 користувацькi елементи керування ed
Lec12 користувацькi елементи керування ed
cit-cit
Тестування Програмного Забезпечення на Практиці - Червень 2014
Тестування Програмного Забезпечення на Практиці - Червень 2014
QualityAssuranceGroup
.NET Platform. C# Basics
.NET Platform. C# Basics
eleksdev
Net framework і c# module 10
Net framework і c# module 10
Andrii Hladkyi
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
БОГДАН ЛОЗИНСЬКИЙ «Технічні аспекти для нетехнічних: автоматизація та баг реп...
QADay
Php unit. Y. Muzychushun
Php unit. Y. Muzychushun
HRdepartment

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 Talks
Vadym Muliavka
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"
Vadym Muliavka
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)
Vadym Muliavka
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depth
Vadym Muliavka
Bug reporting and tracking
Bug reporting and tracking
Vadym Muliavka
Boundary value analysis
Boundary value analysis
Vadym Muliavka
Equivalence partitions analysis
Equivalence partitions analysis
Vadym Muliavka
IT Talks Тестування та аналіз вимог
IT Talks Тестування та аналіз вимог
Vadym Muliavka
IT Talks QA - якість процесів розробки
IT Talks QA - якість процесів розробки
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 Talks
Vadym Muliavka
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"
Vadym Muliavka
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)
Vadym Muliavka
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depth
Vadym Muliavka
Equivalence partitions analysis
Equivalence partitions analysis
Vadym Muliavka
IT Talks Тестування та аналіз вимог
IT Talks Тестування та аналіз вимог
Vadym Muliavka
IT Talks QA - якість процесів розробки
IT Talks QA - якість процесів розробки
Vadym Muliavka
Ad

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()