Рубрики
Без рубрики

Играя с селенами и OpenCV!

Библиотека селена часто используется для автоматизации тестов пользовательского интерфейса и, вероятно, была разработана для нее, но Sel … Tagged с селенами, Python, Automation.

Библиотека селена часто используется для автоматизации тестов пользовательского интерфейса и, вероятно, была разработана для нее, но сам селен не является библиотекой тестирования, и люди довольно часто забывают об этом

Selenium – это в основном набор инструментов, которые позволяют вашему коду взаимодействовать с браузером и элементами HTML.

Архитектура селена Webdriver состоит из четырех основных частей:

  • Языковые привязки (библиотеки для каждого языка).
  • Сервер селена.
  • Водители браузера.
  • Наконец, водители.

Играя с селенами

Селен не является супер быстрой обработкой, возможно, из -за многих компонентов, которые должны участвовать. Я провел забавный эксперимент, чтобы увидеть, насколько медленно действительно селен, путем снижения внешних зависимостей как минимум.

Для эксперимента я в основном выполняю клики по системе, в которой не проводится интернет -вызов на каждом щелчке, а также не происходит рендеринг HTML (или это не имеет большого значения).

Python и Open CV

Я использовал Python вместе с OpenCV, чтобы открыть изображение и создать список точек пикселей для каждого черного пикселя на данном изображении.

def generate_coordenates():
    print('Generating coordinates based on image')
    image=cv2.imread('image2.png')
    black_coordinates = [] #initial position

    for i in range(image.shape[0]):
        for j in range(image.shape[1]):
            # find the black pixels
            if image[i,j,0]==0 and image[i,j,1]==0 and image[i,j,2]==0: 
                black_coordinates.append((j,i))

    print('Writing coordinates to file')
    # generate a coordinates file
    with open(COORDINATES_FILE, 'a') as out:
        for x, y in black_coordinates:
            out.write(f'{x},{y}\n')

    print('Finish generating coordinates file')

Селен и сайт, такой как MS Paint

Затем я использую Selenium, чтобы перейти на веб -сайт, такой как MSPAINT ( https://kleki.com/ ), и генерировать изображение на основе черных пикселей.

driver = webdriver.Chrome(DRIVER_LOCATION)
        with open(COORDINATES_FILE) as file:
            driver.get(DRAW_WEBSITE)
            driver.find_element_by_css_selector("html")

            # move to starting point
            actions = ActionChains(driver)
            actions.move_by_offset(STARTING_COORDINATES.get('x'), STARTING_COORDINATES.get('y'))
            # start painting
            for line in map(lambda line: line.rstrip('\n'), file):
                print('Creating move actions')
                xy = line.split(',') # split the x and y
                current = {'x': int(xy[0]), 'y': int(xy[1])} 
                move_to = {'x': current.get('x') - before.get('x'), 
                           'y': current.get('y') - before.get('y')}

                actions.move_by_offset(move_to.get('x'), move_to.get('y'))
                actions.click()
                before = current.copy()

            # finish painting
            actions.perform()

Процесс

Пара минут:

20 минут:

50 минут:

Результаты

Файл координат закончился 3777 рядов Анкет Потому что для каждой строки Selenium выполняет 2 действия: MOVE_BY_OFFSET и Нажмите это означает 7554 Действия селена были выполнены.

Тест взял 54,67 минута завершить, что означает вокруг 3280 секунд Анкет

И если мы сделаем математику: 7554/3280 = ~ 2,30 . Это означает, что 2,30 действия селена были выполнены в секунду.

Довольно весело …

Комментарии?

Ура:) и не забудьте продолжать использовать селен https://pjcalvo.github.com

Если вам понравился пост:

Оригинал: “https://dev.to/coffeestain/playing-around-with-selenium-and-opencv-27h”