Size: a a a

QA — Автоматизация

2021 May 14

А

Андрей in QA — Автоматизация
Ну т.е. вам не кажется, что вот это уже перебор?
источник

SR

Sergey Raspopov in QA — Автоматизация
Да это из древнего проекта, даже не я начинал, там костылили бездумно ибо скорость нужна была. На рефакторинг увы времени не хватало (
источник

А

Андрей in QA — Автоматизация
я BasePage вот так реализовал
источник

А

Андрей in QA — Автоматизация
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By


class BasePage:
   def __init__(self, driver):
       self.driver = driver

   def __element(self, selectors: dict):
       for search_type in selectors.keys():
           try:
               return self.driver.find_element(getattr(By, search_type), selectors[search_type])
           except NoSuchElementException:
               print('\nERROR: SELECTOR ' + selectors[search_type] + ' IN ' + search_type + ' IS FALSE')
               continue
           except AttributeError:
               print('\nERROR: ATTRIBUTE ERROR OF BY.')
               continue
       raise NoSuchElementException

   def _click(self, selector):
       ActionChains(self.driver).move_to_element(self.__element(selector)).click().perform()
источник

А

Андрей in QA — Автоматизация
а локаторы храню вот так
class Login:

   class Auth:
       email = {'CSS_SELECTOR': "#inputEmail",
                'XPATH': '//input[@id="inputEmail"]'}
       password = {'CSS_SELECTOR': "#inputPassword",
                   'XPATH': '//input[@id="inputPassword"]'}
       login_button = {'CSS_SELECTOR': "button[type='submit']",
                       'XPATH': '//span[@class="btn-text"]'}
источник

А

Андрей in QA — Автоматизация
вот часть страницы логина
from .BasePage import BasePage
from locators import Login


class LoginPage(BasePage):

   def click_log_in(self):
       self._click(Login.Auth.login_button)

   def login_user(self, email, password):
       self._input(Login.Auth.email, email)
       self._input(Login.Auth.password, password)
источник

А

Андрей in QA — Автоматизация
Может умные люди поправят что-то, но пока остановился на такой реализации
источник

А

Андрей in QA — Автоматизация
@sniiick вот точно знает как надо )
источник

P

Pavel Korostin in QA — Автоматизация
allure lifecycle менять нужно. попробуйте как-то так
`Allure.getLifecycle().updateTestCase(testResult -> testResult.getLabels().add(new Label().setName(ResultsUtils.OWNER_LABEL_NAME).setValue("tester #1"))`

только это нужно дергать когда тест запущен уже, может в brfore сработает, нужно проверять, я с junit не пробовал такое
источник

АФ

Алексей Федоткин... in QA — Автоматизация
можно еще в листенер засунуть, кастомный переписать если.

но в профильном чате я давал уже совет попроще и дешевле в реализации
источник

AS

Alexander Sultanov in QA — Автоматизация
io.qameta.allure.Allure.label("owner", "username") вот так это получилось сделать. Если кому понадобиться)
источник

СС

Сказочный Сникерс... in QA — Автоматизация
Жесть. Делай локаторы туплами из типа и селектора. и передавай в обычный find_element через распаковку *
источник

OC

Oleg Chaplashkin in QA — Автоматизация
У меня была такая логика:
Есть общая функция, которая ничего не знает о том, по какому признаку получать (find_element)
В него я передаю: признак и значение (например, By.XPATH, "../.../")
Сами пути хранятся в датаклассах (можно в Json или yaml, где удобнее):

@dataclass
class SomePage:
  button: tuple = (By.XPATH, ".////.")


Потом я просто беру и дергаю метод:
find(SomePage.button)
источник

OC

Oleg Chaplashkin in QA — Автоматизация
О, вверху тоже самое описали
источник

DR

Dmitriy Rusanov in QA — Автоматизация
Привет. Используется junit + GitlabCi. Как осуществить запуск тест-сьютов, составленных по определенным  критериям? Хочется в ручном режиме запускать отдельные сьюты нажатием кнопочки в пайплайне. Типа сьют тестов позитивных, связанных с какой-то функциональностью и т.д.
источник

СС

Сказочный Сникерс... in QA — Автоматизация
а почему нельзя проще?


https://pastebin.com/S81iGEgE
источник

АФ

Алексей Федоткин... in QA — Автоматизация
параметр сборки сделайте и передавайте внутрь тестов. в ямль файле
источник

А

Андрей in QA — Автоматизация
Нууу... разве только потому, что для каждого локатора придется дописывать 'by.', а в моем используется тольуо 1 раз find_element(getattr(By, search_type), selectors[search_type])
источник

СС

Сказочный Сникерс... in QA — Автоматизация
когда тебе придется поменять локатор с CSS на XPATH тебе придется удалить строчку из одного места и поместить в другое. потом хрен в истории гита найдешь как ты это менял
источник

СС

Сказочный Сникерс... in QA — Автоматизация
а нет, вру. думал у тебя сделано интереснее
источник