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

Автоматизируйте веб -сайты Typing Test с помощью Python

В этом посте я покажу вам, как автоматизировать тестовые веб -сайты Typing, что действительно весело и Buil … Tagged с питоном, автоматизацией, новичками.

В этом посте я покажу вам, как автоматизировать тестовые веб -сайты Typing, что действительно весело, и, создав этот проект, вы улучшите свои навыки автоматизации с помощью Selenium.

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

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

virtualenv env
env\Scripts\activate
pip install selenium

Если вы используете Linux в качестве операционной системы, вы можете активировать виртуальную среду, выполнив команду:

virtualenv env
source env/bin/activate

После установки селена, тогда нам понадобится Chromedriver Чтобы выполнить сценарии селена в Chrome, а также автоматизировать любой веб -сайт в Интернете. Сначала вам нужно знать, какая версия Chromedriver совместима с вашим браузером Chrome. Если вы не знаете текущую версию вашего браузера, выполните следующие шаги:

1. Опенян Google Chrome 2. Нажмите три точки в верхнем правом углу окна 3. Повторяйте свой курсор на вариант «Помогите» 4. Нажмите «О Google Chrome»

Текущая версия вашего Chrome Browser появится в следующем окне к верхней части экрана. На момент написания этого поста последняя версия 87 Поэтому я должен скачать Chromedriver 87 в этом случае. Перейдите по следующей ссылке, чтобы загрузить Chromedriver и выберите правильную версию в списке:

https://chromedriver.chromium.org

После загрузки извлеките папку ZIP, скопируйте Chromedriver.exe и вставьте ее в свой текущий рабочий каталог. Большой! Теперь у нас есть наш драйвер, поэтому пришло время проверить, работает ли работает должным образом. Начните с импорта WebDriver из модуля Selenium, затем создайте новую переменную с именем драйвером и назначьте ее на исполняемый путь Chrome.

from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'path\to\chromedriver.exe')

Исполняемый путь должен быть правильно указан на Chromedriver, и, поскольку мы скопировали драйвер в нашем рабочем каталоге, вы можете легко найти путь, проверив свойства этого файла из File Explorer. Как вы заметили путь, окруженный r ” Цитаты, которые означает, что строка будет рассматриваться как необработанная строка, а все коды побега будут проигнорированы. В качестве альтернативы, вы можете использовать двойную переходную черту, но пока давайте оставим ее таким образом. Пришло время просмотреть наш целевой веб -сайт, навигая на следующий URL:

https://typing-speed-test.aoeu.eu

По сути, вы увидите контейнер, заполненный коллекцией случайных слов, и пользователь должен ввести каждое слово, затем нажмите кнопку «Пробел», чтобы получить следующие слова. Скопируйте URL выше и передайте в www.driver-get.com () функционируйте, как ниже:

driver.get("https://typing-speed-test.aoeu.eu")

Теперь мы можем запустить сценарий, чтобы увидеть, действительно ли он работает. Откройте командную строку или терминал, перейдите по текущему каталогу и запустите скрипт, набрав Python Filename.py Анкет Я назвал файл typing.py, поэтому в моем случае запустим следующую команду:

python typing.py

Если это не сработало, пожалуйста, проверьте выполняемый путь вашего драйвера, а также совместимость с версией. Затем, откройте Element Expect, нажав кнопку F12 на клавиатуре, затем нам нужно получить активное слово, которое платформа ожидает введена внутри области ввода. Теперь, если вы наведите курсор на активном словом, у вас будет свойство идентификатора с идентификатором CurrentWord.

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

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

...

word = WebDriverWait(driver, 10).until(
   EC.presence_of_element_located((BY.ID, "currentword")))

Мы собираемся использовать ожидаемую функцию условия, которая возвращает логическую истину в случае успеха или не нулевой, если она не может найти элемент и с помощью Webdriverwait Селен будет ждать максимум 10 секунд, чтобы элемент, соответствующий данным критериям, который будет найден. Как только мы получим текущее слово, оно должно быть передано внутри ввода, и если вы осмотрите этот элемент на веб -сайте, вы увидите, что он имеет идентификатор идентификатор, поэтому давайте определим этот элемент, используя стандартные локаторы селена:

input_area = driver.find_element_by_id("input")
input_area.click()
input_area.send_keys(word.text)

Чтобы запустить таймер, мы должны щелкнуть по поле ввода, потому что есть прослушиватель кликов, который запускает таймер, как только состояние ввода станет сфокусированным. Затем программа должна нажать кнопку «Пробел», чтобы получить следующее слово, и мы можем достичь этого, импортируя модуль клавиш:

from selenium.webdriver.common.keys import Keys

input_area = driver.find_element_by_id("input")
input_area.click()
input_area.send_keys(word.text)
input_area.send_keys(Keys.SPACE)

Большой! Основная структура программы готова. Теперь попробуйте запустить программу, и вы увидите, что автоматизация применяется только для первого слова, а не все из них. Таким образом, этот процесс должен быть выполнен непрерывно, как только все слова закончены.

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

total_words = len(driver.find_elements_by_class_name("nextword"))

С помощью find_elements_by_class_name () Локатор мы можем получить список этих элементов, и, поскольку нам нужна только длина, давайте окружаем его Len () функция После этого определите A для цикла с функцией диапазона для итерации через список и рассмотрите остальную часть кода, чтобы завершить все. Полный код будет выглядеть ниже:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Chrome(executable_path=r'path\to\chromedriver.exe')
driver.get("https://typing-speed-test.aoeu.eu")

total_words = len(driver.find_elements_by_class_name("nextword"))

for word in range(total_words + 1):
   word = WebDriverWait(driver, 10).until(
     EC.presence_of_element_located((BY.ID, "currentword")))

   input_area = driver.find_element_by_id("input")
   input_area.click()
   input_area.send_keys(word.text)
   input_area.send_keys(Keys.SPACE)

Как вы заметили, мы добавили плюс один в длину, чтобы рассчитать первое слово, а также Beacuse, оно не будет включено для перечисления из -за назначенного идентификатора.

Большой! Теперь запустите программу и наслаждайтесь наблюдением, как быстро на самом деле набирает автоматизация. Вы определенно зайдете первое место!

Следуйте за мной на IG для получения дополнительной информации: @coderasha

Ссылки на миниатюры: Робот, разработанный Freepik Пишущая машинка – спроектированная Zirconicusso

Оригинал: “https://dev.to/coderasha/automate-the-typing-test-websites-with-python-abc”