Best Python code snippet using avocado_python
warpR.py
Source:warpR.py
...38 args = info.content.split(' ')39 if len(args) == 1:40 if enable_warp_teleport == True:41 for line in help_msg.splitlines():42 server.tell(info.player, line)43 server.tell(info.player, "§b!!warp tp [å称] §f- §cä¼ éè³åæ ç¹")44 else:45 for line in help_msg.splitlines():46 server.tell(info.player, line)47 elif args[1] == 'help':48 if enable_warp_teleport == True:49 for line in help_msg.splitlines():50 server.tell(info.player, line)51 server.tell(info.player, "§b!!warp tp [å称] §f- §cä¼ éè³åæ ç¹")52 else:53 for line in help_msg.splitlines():54 server.tell(info.player, line)55 elif args[1] == 'add':56 warp_add(args, server, info)57 saveJson()58 elif args[1] == 'update':59 warp_update(args, server, info)60 saveJson()61 elif args[1] == 'list':62 warp_print(server, info)63 elif args[1] == 'search':64 warp_search(args, server, info)65 elif args[1] == 'del':66 warp_delete(args, server, info)67 saveJson()68 elif args[1] == 'tp':69 warp_teleport(server, info, args)70 else:71 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥!!warp help æ¥ç帮å©ä¿¡æ¯")72def warp_teleport(server, info, args):73 if enable_warp_teleport == True:74 if args[2] in warp_list:75 if len(warp_list[args[2]]) == 5:76 if info.player == warp_list[args[2]][4]:77 server.tell(info.player, "§7[§1WARP§f/§aINFO§7] §bå°å¨3ç§åä¼ éè³åæ ç¹ {}".format(args[2]))78 dim = warp_list[args[2]][0]79 x = warp_list[args[2]][1]80 y = warp_list[args[2]][2]81 z = warp_list[args[2]][3]82 time.sleep(3)83 server.execute('execute in {} run tp {} {} {} {}'.format(tp_tran[dim], info.player, x, y, z))84 else:85 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ ç¹ä¸ºç§å¯ï¼éå建人æ æ³ä¼ é")86 else:87 server.tell(info.player, "§7[§1WARP§f/§aINFO§7] §bå°å¨3ç§åä¼ éè³åæ ç¹ {}".format(args[2]))88 dim = warp_list[args[2]][0]89 x = warp_list[args[2]][1]90 y = warp_list[args[2]][2]91 z = warp_list[args[2]][3]92 time.sleep(3)93 server.execute('execute in {} run tp {} {} {} {}'.format(tp_tran[dim], info.player, x, y, z))94 else:95 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ ç¹ä¸åå¨")96 else:97 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cæå¡å¨æªå¼å¯åæ ç¹ä¼ é")98# å é¤åæ ç¹99def warp_delete(args, server, info):100 if len(args) == 3:101 if args[2] in warp_list:102 if len(warp_list[args[2]]) == 5:103 if warp_list[args[2]][4] == info.player:104 del warp_list[args[2]]105 server.tell(info.player, "§7[§1WARP§f/§aINFO§7] §bæåå é¤åæ ç¹ Â§e{}".format(args[2]))106 else:107 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cç§å¯åæ ç¹ï¼åªæå建人å¯ä»¥æä½")108 else:109 del warp_list[args[2]]110 server.tell(info.player, "§7[§1WARP§f/§aINFO§7] §bæåå é¤åæ ç¹ Â§e{}".format(args[2]))111 else:112 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cæªæ¾å°åæ åï¼è¯·æ£æ¥æ¼å")113 else:114 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥æ¨è¦å é¤çåæ å")115# æç´¢åæ ç¹116def warp_search(args, server, info):117 i = 0118 if len(args) == 3:119 server.tell(info.player, "§7[§1WARP§f/§aSEARCH§7] §bå«æå
³é®è¯ §e{} çåæ æ: ".format(args[2]))120 for key in warp_list.keys():121 if args[2] in key:122 i = 1123 if len(warp_list[key]) == 5:124 if warp_list[key][4] == info.player:125 server.tell(info.player, "§7[§1WARP§f/§aSEARCH§7] §bç§å¯åæ ç¹: §e{} §båæ : §r{} §e{}§b, §e{}§b, §e{}".format(key, dim_tran[warp_list[key][0]], warp_list[key][1], warp_list[key][2], warp_list[key][3]))126 elif len(warp_list[key]) == 4:127 server.tell(info.player, "§7[§1WARP§f/§aSEARCH§7] §båæ ç¹: §e{} §båæ : §r{} §e{}§b, §e{}§b, §e{}".format(key, dim_tran[warp_list[key][0]], warp_list[key][1], warp_list[key][2], warp_list[key][3]))128 if i == 1:129 i = 0130 else:131 server.tell(info.player, "§7[§1WARP§f/§aINFO§7] §båï¼å¥é½æ²¡æ")132 else:133 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥éè¦æ¥æ¾çåæ å")134# æå°åæ ç¹135def warp_print(server, info):136 server.tell(info.player, "§7[§1WARP§f/§aLIST§7] §båæ ç¹å表")137 for key, values in warp_list.items():138 dim = values[0]139 x = values[1]140 y = values[2]141 z = values[3]142 try:143 if len(values) == 5:144 player = values[4]145 if player == info.player:146 server.tell(info.player, "§7[§1WARP§f/§aLIST§7] §bç§å¯åæ ç¹: §e{} §båæ : §r{} §e{}, {}, {}".format(key, dim_tran[dim], x, y, z))147 finally:148 if len(values) == 4:149 server.tell(info.player, "§7[§1WARP§f/§aLIST§7] §bå
Œ
±åæ ç¹: §e{} §båæ : §r{} §e{}, {}, {}".format(key, dim_tran[dim], x, y, z))150# æ´æ°åæ ç¹151def warp_update(args, server, info):152 if len(args) == 3:153 if args[2] in warp_list:154 if len(warp_list[args[2]]) == 5:155 if warp_list[args[2]][4] == info.player:156 PlayerInfoAPI = server.get_plugin_instance('PlayerInfoAPI')157 pos = PlayerInfoAPI.getPlayerInfo(server, info.player, path='Pos')158 x = int(pos[0])159 y = int(pos[1])160 z = int(pos[2])161 dim = PlayerInfoAPI.getPlayerInfo(server, info.player, path='Dimension')162 warp_list[args[2]] = [dim, x, y, z, info.player]163 server.tell(info.player, "§7[§1WARP§f/§bINFO§7] §bå·²æåæ´æ°åæ ç¹ Â§e{}".format(args[2]))164 else:165 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cç§å¯åæ ç¹ï¼åªæå建人å¯ä»¥æä½")166 else:167 PlayerInfoAPI = server.get_plugin_instance('PlayerInfoAPI')168 pos = PlayerInfoAPI.getPlayerInfo(server, info.player, path='Pos')169 x = int(pos[0])170 y = int(pos[1])171 z = int(pos[2])172 dim = PlayerInfoAPI.getPlayerInfo(server, info.player, path='Dimension')173 warp_list[args[2]] = [dim, x, y, z]174 server.tell(info.player, "§7[§1WARP§f/§bINFO§7] §bå·²æåæ´æ°åæ ç¹ Â§e{}".format(args[2]))175 else:176 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ ç¹ä¸åå¨ï¼è¯·æ£æ¥æ¼å")177 else:178 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥éè¦æ´æ°çåæ ç¹å称")179# æ·»å åæ ç¹180def warp_add(args, server, info):181 if len(args) == 3:182 if args[2] in warp_list:183 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ ç¹å·²åå¨")184 else:185 PlayerInfoAPI = server.get_plugin_instance('PlayerInfoAPI')186 pos = PlayerInfoAPI.getPlayerInfo(server, info.player, path='Pos')187 x = int(pos[0])188 y = int(pos[1])189 z = int(pos[2])190 dim = PlayerInfoAPI.getPlayerInfo(server, info.player, path='Dimension')191 warp_list[args[2]] = [dim, x, y, z]192 server.tell(info.player, "§7[§1WARP§f/§bINFO§7] §bå·²æåæ·»å åæ ç¹ Â§e{}".format(args[2]))193 elif len(args) == 4:194 if args[2] in warp_list:195 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ ç¹å·²åå¨")196 else:197 if args[3] == 'True':198 PlayerInfoAPI = server.get_plugin_instance('PlayerInfoAPI')199 pos = PlayerInfoAPI.getPlayerInfo(server, info.player, path='Pos')200 x = int(pos[0])201 y = int(pos[1])202 z = int(pos[2])203 dim = PlayerInfoAPI.getPlayerInfo(server, info.player, path='Dimension')204 warp_list[args[2]] = [dim, x, y, z, info.player]205 server.tell(info.player, "§7[§1WARP§f/§bINFO§7] §bå·²æåæ·»å ç§å¯åæ ç¹ Â§e{}".format(args[2]))206 else:207 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåªè½ä¸ºTrueç§å¯åæ ç¹æç空å
Œ
±åæ ç¹")208 else:209 server.tell(info.player, "§7[§1WARP§f/§cWARN§7] §cåæ°é误ï¼è¯·å建åæ ç¹çå称")210def on_load(server, old):211 global warp_list212 server.register_help_message('!!warp', 'åæ ç¹æ件帮å©')213 try:214 with open(json_filename) as f:215 warp_list = json.load(f, encoding='utf8')216 except:217 saveJson()218def on_unload(server):219 saveJson()220#ä¿ååå
¸è³JSON221def saveJson():222 with open(json_filename, 'a+') as f:223 json.dump(warp_list, f, indent=4)
vote.py
Source:vote.py
...19 if info.content.startswith('!!vote'):20 args = info.content.split(' ')21 if len(args) == 1:22 for line in help_msg.splitlines():23 server.tell(info.player, line)24 elif args[1] == 'help':25 for line in help_msg.splitlines():26 server.tell(info.player, line)27 elif args[1] == 'list':28 server.tell(info.player, "§7[§1VOTE§f/§aLIST§7] §bè¿è¡ä¸çæ票å表")29 for key in event_list.keys():30 server.tell(info.player, "§7[§1VOTE§f/§aLIST§7] §bID: §e{}".format(key))31 elif args[1] == 'add':32 add_event(args, server, info)33 elif args[1] == 'remove':34 remove_event(args, server, info)35 elif args[1] == 'result':36 result(args, server, info)37 elif args[1] == 'agree':38 agree_vote(args, server, info)39 elif args[1] == 'disagree':40 disagree_vote(args, server, info)41 else:42 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥!!vote help æ¥ç帮å©ä¿¡æ¯")43#å对æ票44def disagree_vote(args, server, info):45 if len(args) == 3: 46 if args[2] in event_list:47 if info.player in event_list[args[2]][3]:48 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cæ¨ä¸è½ä¸ºèªå·±ç项ç®æ票å¦")49 elif info.player in event_list[args[2]]:50 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cæ¨å·²ä¸ºæ¤é¡¹ç®æ票ï¼ä¸è½éå¤æ票å¦")51 else:52 event_list[args[2]][1] = event_list[args[2]][1] + 153 event_list[args[2]].append(info.player)54 server.tell(info.player, "§7[§1VOTE§f/§aINFO§7] §bæ¨å·²æå为æ¤é¡¹ç®æ票")55 else:56 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·æ±IDä¸åå¨")57 else:58 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥èµæç项ç®çID")59# èµææ票60def agree_vote(args, server, info):61 if len(args) == 3: 62 if args[2] in event_list:63 if info.player in event_list[args[2]][3]:64 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cæ¨ä¸è½ä¸ºèªå·±ç项ç®æ票å¦")65 elif info.player in event_list[args[2]]:66 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cæ¨å·²ä¸ºæ¤é¡¹ç®æ票ï¼ä¸è½éå¤æ票å¦")67 else:68 event_list[args[2]][0] = event_list[args[2]][0] + 169 event_list[args[2]].append(info.player)70 server.tell(info.player, "§7[§1VOTE§f/§aINFO§7] §bæ¨å·²æå为æ¤é¡¹ç®æ票")71 else:72 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·æ±IDä¸åå¨")73 else:74 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥èµæç项ç®çID")75# æ¾ç¤ºç»æ76def result(args, server, info):77 if len(args) == 3:78 if args[2] in event_list:79 if event_list[args[2]][2] == True:80 if event_list[args[2]][3] == info.player:81 server.tell(info.player, "§7[§1VOTE§f/§aRESULT§7] §bé¡¹ç® Â§e{} §bæªæ¢å°ç®å为æ¢ç票æ°ä¸ºï¼".format(args[2]))82 server.tell(info.player, "§7[§1VOTE§f/§aRESULT§7] §bèµæ: §e{} 票".format(event_list[args[2]][0]))83 server.tell(info.player, "§7[§1VOTE§f/§aRESULT§7] §bå对: §e{} 票".format(event_list[args[2]][1]))84 server.tell(info.player, "§7[§1VOTE§f/§aINFO§7] §bå¯ä»¥è¾å
¥!!vote remove 移é¤æ¤é¡¹ç®")85 else:86 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cé常æ±æï¼é¡¹ç®å建è
ç¦æ¢ä»äººæ¥çç»æ")87 else:88 server.tell(info.player, "§7[§1VOTE§f/§aRESULT§7] §bé¡¹ç® Â§e{} §bæªæ¢å°ç®å为æ¢ç票æ°ä¸ºï¼".format(args[2]))89 server.tell(info.player, "§7[§1VOTE§f/§aRESULT§7] §bèµæ: §e{} 票".format(event_list[args[2]][0]))90 server.tell(info.player, "§7[§1VOTE§f/§aRESULT§7] §bå对: §e{} 票".format(event_list[args[2]][1]))91 server.tell(info.player, "§7[§1VOTE§f/§aINFO§7] §bå¯ä»¥è¾å
¥!!vote remove 移é¤æ¤é¡¹ç®")92 else:93 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·æ±IDä¸åå¨")94 else:95 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥éè¦æ¥ç项ç®çID")96# 移é¤æ票项ç®97def remove_event(args, server, info):98 if len(args) == 3:99 if args[2] in event_list:100 if info.player == event_list[args[2]][3]:101 del event_list[args[2]]102 server.tell(info.player, "§7[§1VOTE§f/§bINFO§7] §bå·²æå移é¤é¡¹ç® §e{}".format(args[2]))103 else:104 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåªæ项ç®å建人å¯ä»¥å é¤é¡¹ç®")105 else:106 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·æ±IDä¸åå¨")107 else:108 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥éè¦å é¤é¡¹ç®çID")109# æ·»å æç¥¨é¡¹ç® 110def add_event(args, server, info):111 if len(args) == 3:112 if args[2] in event_list:113 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §c项ç®å称已åå¨")114 else:115 event_list['{}'.format(args[2])] = [0, 0, False, info.player]116 server.tell(info.player, "§7[§1VOTE§f/§bINFO§7] §bå·²æåæ·»å é¡¹ç® Â§e{}".format(args[2]))117 elif len(args) == 4:118 if args[3] == 'True':119 if args[2] in event_list:120 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §c项ç®å称已åå¨")121 else:122 event_list['{}'.format(args[2])] = [0, 0, True, info.player]123 server.tell(info.player, "§7[§1VOTE§f/§bINFO§7] §bå·²æåæ·»å é¡¹ç® Â§e{} §bæ票ç»æå°å¯¹å¤éè".format(args[2]))124 else:125 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼åªè½ä¸ºTrue对å¤éèæ对å¤å¼æ¾")126 else:127 server.tell(info.player, "§7[§1VOTE§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥å建项ç®çå称")128# ç©å®¶å å
¥æé129def on_player_joined(server, player):130 i = 0131 if event_list:132 for item in event_list:133 if player not in event_list[item] and i == 0:134 i = 1135 time.sleep(0.5)136 server.tell(player, "§7[§1VOTE§f/§bINFO§7] §båæäºæ°çæ票项ç®å¦ï¼å¿«å»ççå§!")137 server.tell(player, "§7[§1VOTE§f/§bINFO§7] §bè¾å
¥!!vote list æ¥çæææ票项ç®")138def on_load(server, old):139 global event_list140 server.register_help_message('!!vote', 'æ票系ç»å¸®å©')141 try:142 with open(json_filename, 'r') as f:143 event_list = json.load(f, encoding='utf8')144 except:145 saveJson()146def on_unload(server):147 saveJson()148#ä¿ååå
¸è³JSON149def saveJson():150 with open(json_filename, 'w') as f:151 json.dump(event_list, f, indent=4)...
tpa.py
Source:tpa.py
...13def on_user_info(server, info):14 if info.content == '!!tpaccept':15 if info.player in request_list.values():16 tp_player = list (request_list.keys()) [list (request_list.values()).index (info.player)]17 server.tell(info.player, "§7[§3TPA§f/§aINFO§7] §b对æ¹æ£å¨ä¼ é")18 server.tell(tp_player, "§7[§3TPA§f/§aINFO§7] §b对æ¹å·²æ¥åä¼ é请æ±ï¼å°å¨3ç§åä¼ éï¼è¯·ä¸è¦ç§»å¨")19 sleep(3)20 del request_list[tp_player]21 server.execute('tp {} {}'.format(tp_player, info.player))22 else:23 server.tell(info.player, "§7[§3TPA§f/§cWARN§7] §cæ ä¼ é请æ±çå¾
å¤ç")24 elif info.content.startswith('!!tpa'):25 args = info.content.split(' ')26 if len(args) == 1:27 for line in help_msg.splitlines():28 server.tell(info.player, line)29 elif len(args) == 2:30 tp_request(server, info, args)31 else:32 server.tell(info.player, "§7[§3TPA§f/§cWARN§7] §cåæ°é误ï¼è¯·è¾å
¥ §e!!tpa §cæ¥ç帮å©")33 elif info.content == '!!tpcancel':34 if info.player in request_list.keys():35 another_player = request_list[info.player]36 server.tell(another_player, "§7[§3TPA§f/§aINFO§7] §b对æ¹å·²åæ¶ä¼ é请æ±")37 server.tell(info.player, "§7[§3TPA§f/§aINFO§7] §bä¼ é请æ±å·²åæ¶")38 del request_list[info.player]39 else:40 server.tell(info.player, "§7[§3TPA§f/§cWARN§7] §cæ ä¼ é请æ±çå¾
å¤ç")41 elif info.content == '!!tpdeny':42 if info.player in request_list.values():43 tp_player = list (request_list.keys()) [list (request_list.values()).index (info.player)]44 server.tell(info.player, "§7[§3TPA§f/§aINFO§7] §bå·²æç»ä¼ é请æ±")45 server.tell(tp_player, "§7[§3TPA§f/§aINFO§7] §b对æ¹å·²æç»ä¼ é请æ±")46 del request_list[tp_player]47 else:48 server.tell(info.player, "§7[§3TPA§f/§cWARN§7] §cæ ä¼ é请æ±çå¾
å¤ç")49def tp_request(server, info, args):50 if args[1] in player_list:51 if args[1] == info.player:52 server.tell(info.player, "§7[§3TPA§f/§cWARN§7] §c请ä¸è¦åå°TP")53 else:54 if args[1] in request_list.values():55 server.tell(info.player, "§7[§3TPA§f/§cWARN§7] §c请ç¨ç, ç©å®¶æ£å¨å¤çå¦ä¸ä¼ é请æ±")56 else:57 if info.player in request_list.keys():58 server.tell(info.player, "§7[§3TPA§f/§cWARN§7] §cä¸ä¸ä¼ é请æ±å°æªå¤çå®æ")59 else:60 server.tell(info.player, RTextList(61 RText(' --------------------------------------\n'),62 RText('§bä¼ é请æ±å·²åéè³ç©å®¶ §e{}\n'.format(args[1])),63 RText('[åæ¶ä¼ é请æ±]\n', color=RColor.gold).h('§bç¹å»åæ¶ä¼ é请æ±').c(RAction.run_command, '!!tpcancel'),64 RText('--------------------------------------')65 ))66 request_list[info.player] = args[1]67 server.tell(args[1], RTextList(68 RText(' --------------------------------------\n'),69 RText('§b ç©å®¶ §e{} §bæ³ä¼ éå°ä½ 身边\n\n'.format(info.player)),70 RText(' [åæ] ', color=RColor.green).h('§bç¹å»åæä¼ é请æ±').c(RAction.run_command, '!!tpaccept'),71 RText('[æç»]\n', color=RColor.red).h('§bç¹å»æç»ä¼ é请æ±').c(RAction.run_command, '!!tpdeny'),72 RText('--------------------------------------')73 ))74 else:75 server.tell(info.player, "§7[§3TPA§f/§cWARN§7] §cç©å®¶ä¸å¨çº¿")76def on_player_joined(server, player, Info):77 player_list.append(player)78def on_player_left(server, player):79 if player in player_list:80 player_list.remove(player)81 if player in request_list.keys():82 tell_player = request_list[player]83 server.tell(tell_player, "§7[§3TPA§f/§aINFO§7] §bç©å®¶ §e{} §bå·²éåº, ä¼ é请æ±èªå¨åæ¶".format(player))84 del request_list[player]85 if player in request_list.values():86 tell_player = list (request_list.keys()) [list (request_list.values()).index (player)]87 server.tell(tell_player, "§7[§3TPA§f/§aINFO§7] §bç©å®¶ §e{} §bå·²éåº, ä¼ é请æ±èªå¨åæ¶".format(player))88 del request_list[tell_player]89def on_load(server, old_module):90 server.register_help_message('!!tpa', 'ä¼ éæ件帮å©ä¿¡æ¯')91 if old_module is not None:...
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!!