Python Klavye Hız Testlerini Hacklemek

oynozan

Kilopat
Katılım
4 Eylül 2018
Mesajlar
2.980
Makaleler
2
Çözümler
32
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Herkese selam. Bu yazıda sizlere basit ama etkili bir Python & Selenium uygulaması göstermek istiyorum.

Bilmeyenler için Selenium bir browser otomasyon kütüphanesidir. Tarayıcı üzerindeki işlemleri yazılım aracılığıyla simüle eder. Yazacağımız script'te de yine kendi kodladığım bir klavye hız testi uygulamasını bozacağım. Gerçek bir klavye hız testi sitesini kullanmama sebebim büyük ihtimal bana ban atacak olmaları ayrıca orada gerçek kullanıcılar yarışıyor, onların da hakkına girmemize gerek yok.

Öncelikle yazı yazma testi uygulamasına biz göz atalım.
1690278982841.png

1690279019547.png

1690279107394.png


Görüldüğü üzere kelimelerin olduğu alandaki ilk kelime tbody tr:first-child td:first-child CSS selector'üne sahip. CSS selectors isimli W3C yazısını okuyarak daha fazla bilgi edinebilirsiniz. İlk kelimenin önemi şu: Selenium ile yazdıracağımız kelime her zaman ilk sıradaki olacak, çünkü 1. kelimeyi yazdırdığımızda, 1. kelime kaybolup 2. kelime onun yerine geçiyor. Daha önce klavye hız testi yapanlar dediğimi anlayacaktır.

Ayrıca sonra result class'ına sahip bir kutu var. Oyunun başında bu kutu boşken oyunun sonunda bu kutunun içine p etiketleri ekleniyor. Bunu da Selenium'u ne zaman durduracağımızı anlamak için kullanabiliriz.

Artık koda geçelim:

Python:
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import chromedriver_autoinstaller

chromedriver_autoinstaller.install()

options = Options()
options.add_argument("--start-maximized")

driver = webdriver.Chrome(options=options)
driver.get("http://localhost/typing-test")

input_element = driver.find_element_by_css_selector(".word-input")

finished = False
while not finished:
   
    first_word_element = driver.find_element_by_css_selector("tbody tr:first-child td:first-child")
    first_word = first_word_element.get_attribute("innerText")
    letters = list(first_word)

    for letter in letters:
        input_element.send_keys(letter)
    input_element.send_keys(Keys.SPACE)

    try:
        result_element = driver.find_element_by_css_selector(".result p")
        finished = True
    except:
        pass

Aşağıda program çalıştığında ne kadar hızlı yazdığına ve daha detaylı anlatıma sahip videomu bulabilirsiniz (İngilizce):
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Herkese iyi Sosyaller!
 
Tebrikler hocam. Çok güzel olmuş.
Benim de aklıma gelmişti bu fikir ama dersler yüzünden bir süre ertlemek zorunda kalmıştım. Ama yapsaydım da bu kadar güzel yazamazdım.
Başarılar :)
 
Tebrikler hocam on numara bir düşünce. Bu python ve selenium güzel bir şey.

Tebrik ediyorum. Bende bir proje düşünüyorum ancak bulamıyorum. Böyle yaratıcı fikirler her zaman ufku açıyor.
Hocam ben okulun obs sistemime girip yeni girilen bir not var mı diye kontrol eden bir otomasyon yazmıştım. Benden bir proje örneği, üzerine de qt ile arayüz fln eklersiniz tadından yenmez
 
Hocam ben okulun obs sistemime girip yeni girilen bir not var mı diye kontrol eden bir otomasyon yazmıştım. Benden bir proje örneği, üzerine de qt ile arayüz fln eklersiniz tadından yenmez
Güzel projeymiş hocam. Ona benzer olarak birinin Tiktok hesabında video paylaşıldığında masaüstüne bildirim gönderen bir program yazmıştım, Tiktok kullanmıyorum aslında ama sadece proje olarak yapmıştım.

 
Güzel projeymiş hocam. Ona benzer olarak birinin Tiktok hesabında video paylaşıldığında masaüstüne bildirim gönderen bir program yazmıştım, Tiktok kullanmıyorum aslında ama sadece proje olarak yapmıştım.

Bu da çok iyimiş hocam eline sağlık
 

Geri
Yukarı