Best Python code snippet using SeleniumBase
database.py
Source:database.py
1import sqlite32import bcrypt3import time4from random import random, choice5from math import floor6from uuid import uuid47connection = sqlite3.connect("./database.db")8cursor = connection.cursor()9def random_string():10 return str(11 floor(random() * 1e16)12 ) # 1e16 is wetenschappelijke notatie (1 * 10^16)13def repeat_action(action, name):14 def return_function():15 count = int(input(f"Hoeveel {name} wil je aanmaken? "))16 for i in range(count):17 action()18 print(f"{i+1}/{count} {name} toegevoegd!")19 print(f"{count} {name} toegevoegd!")20 return return_function21# dit is om dit script te organiseren22programma_acties = []23class programma_actie:24 def __init__(self, name, execute):25 self.name = name26 self.exec = execute27# initialiseer een nieuwe (lege) database28def init_db():29 commands_text = open("./init_db.sql").read()30 commands = commands_text.strip().split(31 "\n" * 232 ) # python sqlite3 kan maar 1 "statement" per cursor.execute doen, en de statements zijn gescheden door witregels in ./init_db.sql33 for i, command in enumerate(commands):34 cursor.execute(command)35 print(f"SQL commando {i+1} van de {len(commands)} uitgevoerd...")36 print("Klaar!")37programma_acties.append(programma_actie("Maak tabellen aan", init_db))38def destroy_tables():39 for table_name in ["games", "users", "social"]:40 # format strings + sql is gevaarlijk vanwege sql injectie, maar omdat de invoer hier niet door de gebruiker aangepast kan worden is het semi-ok41 cursor.execute(f"drop table if exists {table_name}")42 print(f"Tabel \"{table_name}\" verwijderd!")43programma_acties.append(44 programma_actie("Verwijder alle tabellen", destroy_tables)45)46def user_amount():47 return len(cursor.execute("select user_id from users").fetchall())48# pak een willekeurige user_id uit de users tabel (gebruikt voor insert_random::games)49def random_player():50 return choice(cursor.execute("select user_id from users").fetchall())[0]51# class om alle functies die willekeurige data invoegen te organiseren (python heeft geen namespaces :( )52class insert_random:53 # omdat veel kolommen in onze database gebruikersinteracties opslaan laat ik ze hier leeg omdat ik geen tijd hem om gebruikersgedrag te simuleren.54 def __init__(self):55 pass56 def users(self):57 user_id = str(uuid4())58 username = random_string()59 email = f"{username}@example.com"60 password_hash = bcrypt.hashpw(61 random_string().encode("utf-8"), bcrypt.gensalt()62 )63 registered = int(time.time() * 1000)64 cursor.execute(65 "insert into users values (?, ?, ?, NULL, ?, ?, \"[]\", FALSE, \"user\", \"{}\", NULL, \"online\") ",66 (user_id, username, email, password_hash, registered)67 )68 def games(self):69 if user_amount() < 2:70 print("Er zijn niet genoeg gebruikers om spellen aan te maken!")71 return72 game_id = str(uuid4())73 timestamp = int(time.time() * 1000)74 cursor.execute(75 "insert into games values (?, NULL, NULL, ?, ?, NULL, ?, NULL, NULL, NULL, FALSE, \"in_progress\", \"default\") ",76 (game_id, random_player(), random_player(), timestamp)77 )78 def friends(self):79 users = list(80 rij[0]81 for rij in cursor.execute("select user_id from users").fetchall()82 ) # cursor.execute.fetchall() stuurt rijen altijd terug als tuples ookal vraag je 1 kolom op, dus dit zet het om naar een list van strings83 # maak een nieuwe rij aan voor elke gebruiker in tabel users als deze nog niet bestaat84 for user in users:85 if cursor.execute(86 "select user_id from social where user_id = ?", [user]87 ).fetchone():88 continue89 cursor.execute(90 "insert into social values (?, NULL, NULL, NULL)", [user]91 )92programma_acties.append(93 programma_actie(94 "Maak nepgebruikers aan",95 repeat_action(insert_random().users, "nepgebruikers")96 )97)98programma_acties.append(99 programma_actie(100 "Maak voorbeeld spellen aan",101 repeat_action(insert_random().games, "spellen")102 )103)104programma_acties.append(105 programma_actie(106 "Vul social tabel met gebruikers",107 insert_random().friends108 )109)110# Verifiëer een user_id of verkrijg een user_id uit een username111def resolve(resolveable):112 user_id = None113 user_id = user_id or cursor.execute(114 "select user_id from users where user_id = ?", [resolveable]115 ).fetchone()116 user_id = user_id or cursor.execute(117 "select user_id from users where username = ?", [resolveable]118 ).fetchone()119 # stuur de eerste kolom van de rij terug omdat het weer een tuple is >:(120 return user_id[0] if user_id else None121def edit_username():122 resolveable = input("Voer een gebruikers-id of gebruikersnaam in: ")123 user_id = resolve(resolveable)124 if not user_id:125 print(126 "Er is geen gebruiker met gebruikers-id of gebruikersnaam \"{resolveable}\""127 )128 return129 new_username = input("Voer een nieuwe gebruikersnaam in: ")130 cursor.execute(131 "update users set username = ? where user_id = ?",132 [new_username, user_id]133 )134 print("Nieuwe gebruikersnaam succesvol toegepast!")135programma_acties.append(136 programma_actie(137 "Pas de gebruikersnaam van een gebruiker aan", edit_username138 )139)140def delete_user():141 resolveable = input("Voer een gebruikers-id of gebruikersnaam in: ")142 user_id = resolve(resolveable)143 if not user_id:144 print(145 "Er is geen gebruiker met gebruikers-id of gebruikersnaam \"{resolveable}\""146 )147 return148 cursor.execute("delete from users where user_id = ?", [user_id])149 print("Gebruiker verwijderd!")150programma_acties.append(151 programma_actie("Verwijder een gebruiker", delete_user)152)153def mark_game_done():154 game_id = input("Voer een game-id in om als klaar te markeren: ")155 if not cursor.execute(156 "select game_id from games where game_id = ?", [game_id]157 ).fetchone():158 print("Kon geen spel vinden met die game_id!")159 return160 outcome = "w"161 starttime = cursor.execute(162 "select timestamp from games where game_id = ?", [game_id]163 ).fetchone()[0]164 duration = int(time.time() * 1000) - starttime165 cursor.execute(166 "update games set outcome = ?, duration = ?, status = \"finished\" where game_id = ?",167 [outcome, duration, game_id]168 )169 print("Spel gemarkeerd als afgelopen!")170programma_acties.append(171 programma_actie("Spel markeren als afgelopen", mark_game_done)172)173def delete_game():174 game_id = input("Voer een game-id in om te verwijderen: ")175 if not cursor.execute(176 "select game_id from games where game_id = ?", [game_id]177 ).fetchone():178 print("Kon geen spel vinden met die game_id!")179 return180 cursor.execute("delete from games where game_id = ?", [game_id])181 print("Spel verwijderd!")182programma_acties.append(programma_actie("Spel verwijderen", delete_game))183# maakt een vriendschap tussen 2 willekeurige user_id's184def make_friendship():185 # Dit is misschien de lelijkste functie die ik ooit heb geschreven, wees gewaarschuwd186 user_1 = random_player()187 user_2 = random_player()188 while user_1 == user_2: # garandeer dat user_1 != user_2189 user_2 = random_player()190 # [v for v in ? if v] zorgt er voor dat lege list elementen worden verwijderd191 # .fetchone()[0] or "" is omdat deze kolommen ook NULL kunnen zijn, maar ik wil altijd een string192 # .split(",") is omdat het user_id's zijn die gescheden zijn door komma's193 user_1_friend_list = [194 v for v in (195 cursor.execute(196 "select friends from social where user_id = ?", [user_1]197 ).fetchone()[0] or ""198 ).split(",") if v199 ]200 user_2_friend_list = [201 v for v in (202 cursor.execute(203 "select friends from social where user_id = ?", [user_2]204 ).fetchone()[0] or ""205 ).split(",") if v206 ]207 user_1_friend_list.append(user_2)208 user_2_friend_list.append(user_1)209 cursor.execute(210 "update social set friends = ? where user_id = ?",211 [",".join(user_1_friend_list), user_1]212 )213 cursor.execute(214 "update social set friends = ? where user_id = ?",215 [",".join(user_2_friend_list), user_2]216 )217 print(f"Nieuwe vriendschap gemaakt tussen {user_1} en {user_2}")218programma_acties.append(programma_actie("Vriendschap maken", make_friendship))219def reset_friendlist():220 resolveable = input("Voer een gebruikers-id of gebruikersnaam in: ")221 user_id = resolve(resolveable)222 if not user_id:223 print(224 "Er is geen gebruiker met gebruikers-id of gebruikersnaam \"{resolveable}\""225 )226 return227 cursor.execute("delete from social where user_id = ?", [user_id])228 cursor.execute(229 "insert into social values (?, NULL, NULL, NULL)", [user_id]230 )231 print(f"Vriendenlijst van {user_id} geleegd!")232programma_acties.append(233 programma_actie("Vriendenlijst legen", reset_friendlist)234)235for table in ["users", "games", "social"]:236 programma_acties.append(237 programma_actie(238 f"Tabel '{table}' weergeven",239 lambda: print(cursor.execute(f"select * from {table}").fetchall())240 )241 )242programma_acties.append(243 programma_actie("Sla alle wijzigingen op", connection.commit)244)245programma_acties.append(programma_actie("Stop", exit))246def main():247 while True:248 # print witregels249 print("\n" * 2, end="")250 # print alle acties in programma_acties251 for i, actie in enumerate(programma_acties):252 print(f"#{i}: {actie.name}")253 # vraag om keuze254 keuze = int(input("Geef je keuze: "))255 print("\n", end="")256 # kijk of keuze bestaat257 if keuze > len(programma_acties) - 1:258 print("Die actie bestaat niet!")259 continue # ga door naar de volgende iteratie van de while loop (voer keuze niet uit)260 # voer keuze uit261 programma_acties[keuze].exec()262if __name__ == "__main__":...
dutch.py
Source:dutch.py
...129 return self.switch_to_window(*args, **kwargs)130 def overschakelen_naar_standaardvenster(self, *args, **kwargs):131 # switch_to_default_window()132 return self.switch_to_default_window(*args, **kwargs)133 def markeren(self, *args, **kwargs):134 # highlight(selector)135 return self.highlight(*args, **kwargs)136 def markeren_klik(self, *args, **kwargs):137 # highlight_click(selector)138 return self.highlight_click(*args, **kwargs)139 def scrollen_naar(self, *args, **kwargs):140 # scroll_to(selector)141 return self.scroll_to(*args, **kwargs)142 def naar_boven_scrollen(self, *args, **kwargs):143 # scroll_to_top()144 return self.scroll_to_top(*args, **kwargs)145 def naar_beneden_scrollen(self, *args, **kwargs):146 # scroll_to_bottom()147 return self.scroll_to_bottom(*args, **kwargs)...
taken_main.py
Source:taken_main.py
1import mysql.connector2import time3import serial4mydb = mysql.connector.connect( #Verbinding maken met de database5 host="vserver385.axc.nl",6 user="tychogp385_ipmedt5",7 passwd="ipmedt5",8 database="tychogp385_ipmedt5",9 buffered=True10)11port = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=3.0)12mycursor = mydb.cursor()13def taakKlaar(id): #functie om taken KLAAR te markeren14 mycursor.execute("UPDATE taken SET status = 'klaar' WHERE id = " + str(id) + ";")15 mycursor.execute("UPDATE puntentelling SET punten = punten + 10;")16def taakNietKlaar(id): #functie om taken NIET VOLTOOID te markeren17 mycursor.execute("UPDATE taken SET status = 'niet voltooid' WHERE id = " + str(id) + ";")18 mycursor.execute("UPDATE puntentelling SET punten = punten - 12;")19def laadTaken(): #functie om de volgende drie taken te sturen naar de arduino20 mycursor.execute("SELECT id, vak FROM taken WHERE (DATE(deadline) >= CURDATE() AND status != 'klaar') ORDER BY uitvoerdatum, deadline;")21 i = 022 global ids23 global taken24 ids = []25 taken = []26 for x in mycursor:27 i+=128 if (i <= 3):29 ids.append(x[0])30 taken.append(x[1])31 for x in taken:32 print(x)33 port.write(x.encode())34 port.write(str("#").encode())35while (True): #Check communicatie tussen arduino en backend36 rcv = port.readline().strip()37 if (rcv == "r"): #Taken synchroniseren met arduino38 print("r")39 laadTaken()40 if (rcv == "v1"): #Taak 1 van de lijst afvinken41 try:42 taakKlaar(ids[0])43 except:44 continue45 if (rcv == "v2"): #Taak 2 van de lijst afvinken46 try:47 taakKlaar(ids[1])48 except:49 continue50 if (rcv == "v3"): #Taak 3 van de lijst afvinken51 try:52 taakKlaar(ids[2])53 except:54 continue55 if (rcv == "x1"): #Taak 1 van de lijst niet voltooid markeren56 try:57 taakNietKlaar(ids[0])58 except:59 continue60 if (rcv == "x2"): #Taak 2 van de lijst niet voltooid markeren61 try:62 taakNietKlaar(ids[1])63 except:64 continue65 if (rcv == "x3"): #Taak 3 van de lijst niet voltooid markeren66 try:67 taakNietKlaar(ids[2])68 except:69 continue70 mydb.commit() #Alles opslaan op de database...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!