Приклад тестування сайту trello.com

Розглянемо простий автоматизований тест сайту, що використовує систему керування проектами методом канбан.

Наступний код здійснює

  1. відкриття вікна в браузері Firefox
  2. логін
  3. перехід до дошки завдань
  4. створює нову дошку (стовпець) з назвою Webdriver
  5. видаляє дошку
  6. деавторизується
# -*- 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 Trello5(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "https://trello.com"
        self.verificationErrors = []
        self.accept_next_alert = True
    
    def test_trello5(self):
        driver = self.driver
        driver.get(self.base_url + "/login")
        driver.find_element_by_id("user").clear()
        driver.find_element_by_id("user").send_keys("mail@mail.mail")
        driver.find_element_by_id("password").clear()
        driver.find_element_by_id("password").send_keys("12345678")
        driver.find_element_by_id("login").click()
        driver.find_element_by_css_selector("span.board-list-item-name").click()
        driver.find_element_by_css_selector("span.placeholder.js-open-add-list").click()
        driver.find_element_by_name("name").clear()
        driver.find_element_by_name("name").send_keys("webdriver")
        driver.find_element_by_xpath("//input[@value='Save']").click()
        driver.find_element_by_xpath("//div[@id='board']/div[4]/div/a").click()
        driver.find_element_by_link_text("Archive This List").click()
        driver.find_element_by_css_selector("span.header-btn-text.js-member-name").click()
        driver.find_element_by_link_text("Log Out").click()
    
    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e: return False
        return True
    
    def is_alert_present(self):
        try: self.driver.switch_to_alert()
        except NoAlertPresentException, 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()

Розглянемо сам код

elf.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://trello.com"
driver = self.driver
driver.get(self.base_url + "/login")

Відкриває браузер та здійснює перехід до необхідної сторінки.


driver.find_element_by_id("user").clear()
driver.find_element_by_id("user").send_keys("mail@mail.mail")
driver.find_element_by_id("password").clear()
driver.find_element_by_id("password").send_keys("12345678")
driver.find_element_by_id("login").click()

Шукає поля за id, передає туди задані значеня логіну та пароля та натискає кнопку логіну.


driver.find_element_by_css_selector("span.board-list-item-name").click()
driver.find_element_by_css_selector("span.placeholder.js-open-add-list").click()

Відкриває необхідну нам дошку завдань.


driver.find_element_by_name("name").clear()
driver.find_element_by_name("name").send_keys("webdriver")
driver.find_element_by_xpath("//input[@value='Save']").click()

Створює нову дошку.


driver.find_element_by_xpath("//div[@id='board']/div[4]/div/a").click()
driver.find_element_by_link_text("Archive This List").click()

Видаляє створений стовпець.


driver.find_element_by_css_selector("span.header-btn-text.js-member-name").click()
driver.find_element_by_link_text("Log Out").click()

Деавторизує користувача, щоб не зберігалися дані логіну та пароля і цей же тест зміг виконатися наступного разу.


Результат виконання:

We #StandWithUkraine.
Learn how you can help too!

#Stand­With­Ukraine

We don't know how long the war will last. But what we do know is that we can't stand aside and watch.

The fastest way you can help too is to support Ukraine financially. The National Bank of Ukraine (NBU) has opened a multi-currency account for that purpose. Learn more

This account accepts donations in US, Canadian and Australian dollars, euros, British pounds, Swiss francs, yuan and yen.

UA823000010000032302338301027

Also accepting cryptocurrency donations – the fastest way to help. Learn more

BTC – 357a3So9CbsNfBBgFYACGvxxS6tMaDoa1P

ETH, USDT (ERC-20) – 0x165CD37b4C644C2921454429E7F9358d18A45e14

Spread the word!