Лучший способ разработать протокол испытаний с использованием Selenium с Python - PullRequest
0 голосов
/ 13 июня 2019

Я работаю над фреймворком, используя Selenium с Python.Все, кажется, работает просто отлично, кроме отчета об испытаниях.До сих пор я использовал модель логирования, но я не уверен, достаточно ли она хороша в современной автоматизации.Я ничего не использую по атомам, чтобы написать все компоненты моей структуры, управляемой данными.Пока что мой фреймворк состоит из 3 файлов: 1 - setup.py со всеми функциями, которые я использую: setup (), teardown () click (), sendKeys () и т. Д. Внутри этой функции я также импортирую логи и каждый разя выполняю любые действия, записывающие записи в новый файл.2 - data.json - мопинг всех элементов.3 - testCase.py - все тестовые случаи.Пожалуйста, посоветуйте мне, как я могу улучшить свои рамки.Спасибо

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 time
import logging
import json

#logging when call writes to log file
logging.basicConfig(filename='tests_Run.log',level=logging.INFO, format='%(asctime)s:%(levelname)s:%(funcName)s:%(message)s')

#example of logging usage:

def findORclick_element(self, itemInDict ,elemLocator):# This function perform click
        locatorStrategy = elemLocator[:2]
        locator = load_value(itemInDict ,elemLocator)
        ele = None
        try:
            if locatorStrategy == 'id':  # return by ID
                ele =  self.driver.find_element_by_id(locator).click()
                logging.info('  - - Clicked on "{}", - - with value: "{}"'.format(elemLocator, locator))


#this is how logging file output looks like:
2019-06-11 11:53:06,856:INFO:findORclick_element:  - - Clicked on "id_GET_A_QUOTE_NOW", - - with value: "menu-item-188"
2019-06-11 11:53:07,098:INFO:findORclick_element:  - - Clicked on "xp_PRODUCT_LIABILITY", - - with value: "/html/body/div[1]/div/div/div/div[1]/div[1]/div[1]/form/div[2]/div[1]/div[1]/ul/li[2]/div[1]/p/a"
2019-06-11 11:53:07,392:INFO:send_keys:  - - - - - - - Typed in to "id_COMPANY_NAME", - - with value: "input_41_1"
2019-06-11 11:53:07,576:INFO:send_keys:  - - - - - - - Typed in to "id_DOING_BUSINESS_AS", - - with value: "input_41_3"
2019-06-11 11:53:07,792:INFO:send_keys:  - - - - - - - Typed in to "id_WEBSITE", - - with value: "input_41_92"
2019-06-11 11:53:07,970:INFO:send_keys:  - - - - - - - Typed in to "id_MAILING_ADDRESS_LINE_1", - - with value: "input_41_104"
2019-06-11 11:53:08,070:INFO:send_keys:  - - - - - - - Typed in to "id_ADDRESS_LINE_2", - - with value: "input_41_105"
2019-06-11 11:53:08,249:INFO:send_keys:  - - - - - - - Typed in to "id_CITY", - - with value: "input_41_106"
2019-06-11 11:53:08,294:INFO:findORclick_element:  - - Clicked on "xp_STATE_california", - - with value: "/html/body/div[1]/div/div/div/div[1]/div[1]/div[1]/form/div[3]/div[1]/div[1]/ul/li[7]/div/select/option[6]"
2019-06-11 11:53:08,431:INFO:send_keys:  - - - - - - - Typed in to "id_ZIPCODE", - - with value: "input_41_109"
2019-06-11 11:53:08,554:INFO:send_keys:  - - - - - - - Typed in to "id_CONTACT_NAME_FIRST", - - with value: "input_41_6_3"
2019-06-11 11:53:08,689:INFO:send_keys:  - - - - - - - Typed in to "id_CONTACT_NAME_LAST", - - with value: "input_41_6_6"

1 Ответ

0 голосов
/ 14 июня 2019

Поскольку я создаю свой Selenium с платформой Python с нуля и не использую ничего, кроме Atom для кодирования - после исследования я решил использовать следующий дизайн.

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
from   datetime import datetime
import logging

now = datetime.now().strftime('%Y-%m-%d---%H-%M-%S')

logging.basicConfig(filename='/test_log-%s.log' % now,
        level=logging.INFO, format='%(asctime)s:%(levelname)s:%(message)s\n')

driver = webdriver.Chrome()
driver.get('https://www.google.com')
try:
    driver.find_element_by_name('q').send_keys('selenium')
    driver.find_element_by_name('btnK').click()
except Exception as e:
    driver.save_screenshot('screenshot-%s.png' % now)
    logging.info(e)
driver.quit()

Вот так выглядит файл журнала, когда блок «кроме» ловит ошибку:

2019-06-13 19: 36: 41,327: ИНФОРМАЦИЯ: Сообщение: элемент не взаимодействует (Информация о сеансе: chrome = 74.0.3729.169) (Информация о драйвере: chromedriver = 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs / главы-головок / 3729 @ {# 29}), платформа = Mac OS X 10.14.5 x86_64)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...