I've used Selenium for automating multiple routine tasks at my work. It is saving lots of time for me. Thanks for this series Tim, it'll be good brush up for me.
Clear, concise. Great stuff, thanks so much. It's dev's like you on RUclips and more that [literally] make the world go 'round. Appreciate this series!
I am an old guy, but I enjoy learning with your videos. As the time passes by I see you growing from an intelligent, agile teen to a more seasoned young man. Cheers!
If the selenium version you are using is v4.6.0 or above (which I think it is as I see SeleniumManger in the error trace), then you don't really have to set the driver.exe path. Selenium can handle the browser and drivers by itself. So your code can be simplified as below: from selenium import webdriver driver = webdriver.Chrome()
I think you are the best teacher for python. I learned a lot from your beginner's python course (4hours) and now I hope to learn more from this course. Thank you.
I just made a tinder auto swiping bot yesterday and was thinking to learn more about selenium and this video pops up. Great timing and awesome videos man! Keep up the good work.
right after i finished the course, i wrote a programm that will spam join a kahoot game that crashes game whenever teacher gives out the code, and i'll let my programm pick some inappropreate name, anyway love your courses
Man!!! You are a legend. Actually I already downloaded selenium and webdriver but You have answered all problems that I was straglling when I was trying to download. You deserve more than subscribtion and likes
If your tab closes automatically after you run the code and you are using VS Code, Try to run the code right-clicking anywhere in the editor and select Run Python File in Terminal. I was running the code pressing F5, I tried this and it worked
FYI: For the Chrome driver on Windows, you can use chromedriver-binary library "pip install chromedriver-binary" in case you have trouble with the dowloaded driver.
Awesome man, thanks for the vid! Took me a while to figure out why I was getting an error message in my terminal...It's super important that the PATH = "/Applications/chromedriver" (this is where it was for me) for Mac user is written correctly, otherwise it won't be able to find the chromedriver ... Anyways great video, will be watching the other vids.. nice work
this has some potential but no matter what I tried it doesn't work , tried it on the mac .windows same issue 'str' has no capabilities and nowhere to go from there
I just started learning Selenium and the first problem I encountered was that selenium will automatically close the window if no action is made. So basically if you run the code in this video the window will stay opened for like 2 seconds then it will be shutdown. However I found a solution, add "while True: pass" in the end of the script. I hope it helps!
Yes I made notifications straight to my phone with spontit or discord and use web scraping you can even permanently change variables with txt files and other cool stuff
thank you so much. This is about the only tutorial I cant find out there that makes sense and goes through each move step by step. Defo gonna keep coming back to this channel
I enjoyed the video so much, but there is an update for newer versions of chrome. You shoould do this : from selenium import webdriver PATH = "C:\\Program Files\\chromedriver-win64\\chromedriver.exe" cService = webdriver.ChromeService(executable_path=PATH) driver = webdriver.Chrome(service = cService) Instead of passing the executable_path to Chrome() directly.
I tried it like you did here 9:30, but why does it not show the chrome window when I run the code, instead the chrome opens for a sec and quits... I did everything right.
This video is gold! I have needed to scrape in two different computers and i´ve come back to install everything, cause its so well explained. pls keep it online forever (L)
I was looking for a selenium tutorial and couldn't find one that was atleast a year ago, Please upload the next parts asap Also amazing video, Keep up the good work
Hello everyone! I am getting this error: "AttributeError: 'str' object has no attribute 'capabilities' ". Has anyone encountered the same error message? If so, may I ask how did you fix it?
@@MissGurung_AI I've also had the same issue, but when I do that I get an error "Error getting version of chromedriver 115. Retrying with chromedriver 114 (attempt 1/5)". And it opens like a debug? version of chrome, while I'd want it to open with my regular chrome browser. Any ideas? I'm running chrome *.171, but the chromedriver I downloaded id *.170. Is that the issue?
@@mananmalhotra792 thank you for answering my post. What does the "r" function do exactly & why do dome coding tutorials like this one not have them? It's confusing. When should/ shouldn't I use it?
@@markbrown5365 for example, if I wanted the string ‘something ’ it would create the string ‘something’, but it would have a new line at the end. If instead I did r’something ’, it would just be ‘something ’.
Hey Tim. Great videos series! I am really learning a lot - thank you so much. One idea for a future video might be how to set up headless Selenium on a remote server :)
May 2024: Following the instructions and using " from selenium import webdriver service = webdriver.ChromeService(executable_path = 'C:\Program Files (x86)\chromedriver.exe') driver = webdriver.Chrome(service=service) " worked for me, otherwise an error appears: " 'str' object has no attribute 'capabilities' "
1:48 Debian includes standard packages for python3-selenium, chromium-driver and phantomjs. Both the latter two are listed as dependencies for the first one.
msg = f"Unable to obtain driver for {options.capabilities['browserName']} using Selenium Manager." ^^^^^^^^^^^^^^^^^^^^ AttributeError: 'str' object has no attribute 'capabilities'
Leonardo Neute If your python is up to date pip would also be python 3, since python 2 has been phased out. At least this is the case on my Linux machine. Also you can run pip -V to make sure you are using the correct version.
You can install chrome driver by using "chocolaty" by the command " choco install chromedriver" it will install the chrome driver if you have chocolaty installeed and then you will not have to add the path each time. The code will be as:- from selenium import webdriver driver = webdriver.Chrome() driver.get("google.com")
If you want to completely automate the process, chocolaty have sample of script to download it either by powershell or cmd, so you can make a cmd script that downloads chocolaty and then tells it to download the next thing.
Heads up, in 2024, doing: "driver = webdriver.Chrome(PATH)" will throw an error. It can be fixed by removing PATH, like this: "driver = webdriver.Chrome()"
I couldn't find the particular exception, but I'd look through this selenium-python.readthedocs.io/api.html#module-selenium.webdriver.chrome.webdriver if no luck I'd try the Firefox driver
@@lovely-shrubbery8578 I believe that I used another path withing a folder, so that worked out fine. Now, I get empty results when scraping from tradingeconomics.com/commodities tables. A little progress, but now if arrays, those results come back empty. If anyone can try getting data from those tables, what will be great. Also tried bs4 to get into the classes of td, tr, etc. No results.. Thanks.
If anybody is getting the error:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape Add an 'r' before the path PATH = r"C:\"
@GucciVittion thanks, that's helpful. it wasn't my problem actually, but I got it fixed so it's okay. (solution: add executable path=r before the driver, but not for PATH)
Nice tutorial! I used geckodriver and it works fine too; but path/'driver' variables must be different with gecko: driver = webdriver.Firefox(executable_path=r'PATH\geckodriver.exe') took me a while to find out, so I'll just leave it here.
For those who watch this video years after it posted. I think a few things are changed: 1) you do not need to download the web driver anymore. Just use driver = webdriver.Chrome() 2) if you open a page and it closes immediately, add the following (assuming you are using Chrome as well): from selenium.webdriver.chrome.options import Options options = Options() options.add_experimental_option("detach", True) driver = webdriver.Chrome(options= options) These are two main issues I had when I was coding along. Took me sometime to figure out a solution. Hope it helps.
Hi Tim thank you for your help And I have a question Why sometimes selenium act weird, like sometimes the send keys and click method will not work even if I have no errors. This is a huge strange problem it not true in every case if I had a script which not working because of the send keys issue but I copy the code and paste in a another file it worked , why is this?
Real talk: Is there anyone out there who's advanced enough to want to use Selenium but basic enough that they don't know what Pip is nor how to install Python packages?
Yeah so I know pip is what you use to install python packages? But it’s real easy for me to forget and I actually had to look up what it meant bc I was having problems with pathing and needed to fix. Installing the packages are easy but i had to to learn about relative and absolute paths and I watched a video and learned that my files locations were all jacked up and the video fixed that issue for me. I’m learning on my own and at my new job we do some data entry for new hires. We have to get id copy paste from one form to another. One of the big things is when the forms don’t match it kicks an error report and we manually go through looking for the mismatch. We have to get the new hires to fill out a paper and then we trial by error find the mistake. My first day I was like woah this is tedious and time consuming I bet I could find a way to get the information from the forms compare them and where they don’t match have the correct info put into the form. So here I am learning how to do that :)
Thanks for explaining pip. I think people doing tutorials or guides for whichever language or framework are kind of allergic to explaining package managers and assume that everyone knows what they are talking about.
You, my friend, will go down in history as a legend
He has already...
What if he defeats death and never goes down
@@mayurkalsekar524 creates a script to cheat death XD
Haha so true
That’s way too big words for just a RUclips video
Sunday after lunch (in Poland) I was just about to sit down to study and here's a new tutorial. Perfect timing
Widzę w wybornych tematach się obracasz
@@wojciechsuchecki5690 A jak
witam rodaków
No cześć wszystkim :D
@@twobyfour2468 aij ies dàk rozejskï
I was just getting into web scraping, then you dropped this tutorial! Perfect timing.
Goodluck ..
Try with selenium ide ..
same with me
same
same
Same, was looking into Beautiful Soup.
I've never watched a so clear tutorial. Fantastic tutorial!
I've used Selenium for automating multiple routine tasks at my work. It is saving lots of time for me.
Thanks for this series Tim, it'll be good brush up for me.
And what are those tasks?
Hi kiran, i tried this but not work. Please help me.
@@MrQuay03 His safety training ;)
My God, thank you for making a series in selenium
Clear, concise. Great stuff, thanks so much. It's dev's like you on RUclips and more that [literally] make the world go 'round. Appreciate this series!
Here I am again, 4 years later, thanks for posting this 4 years ago! I knew I'd eventually forget and needed an awesome refresher course!
Bro you are great, I thought of making a selenium project today and you started a new series on it. Love you a lot !!
I am an old guy, but I enjoy learning with your videos. As the time passes by I see you growing from an intelligent, agile teen to a more seasoned young man. Cheers!
awesone tim that was a great tutorial, i like how u ran through everything that couldve went wrong and showed people how to fix it
This is a very detailed tutorial on intro to web scraping using Python, well done Tim!
I was a chemical engineer an year back .... Now I am approaching an MS in CS ...thanks dude ....learnt a lot from you
Good luck!
Just curious, but why did you make a switch to CS from chem engineering?
Spent two hours on Friday evening to find solution to initial setup. I can have a cold beer now. Thanks. You rock!
If the selenium version you are using is v4.6.0 or above (which I think it is as I see SeleniumManger in the error trace), then you don't really have to set the driver.exe path. Selenium can handle the browser and drivers by itself.
So your code can be simplified as below:
from selenium import webdriver
driver = webdriver.Chrome()
Thank you so much! I was struggling with the error until I saw your comment!
thank u, i was struggling til i saw ur comment!
Will this work with Firefox as well?
I was literally about to make that same comment here after struggling for an hour
legend, thanks
What i was trying to setup for 2+ hours with that chromedriver,solved in 5 min effort ,with this video (rookie over here!)That made my day!!!
Yesterday I was searching for selenium tutorials for so long and today he posts this video
Happy days
My man. A million subscribers. It's been a long time coming. Keep up the great work.
Started learning selenium python today and this is really helpful, simple and easy to learn. Thanks a lot!
Did you knew python before? Asking for a friend...
@@marius35mm Yes, a little bit. Just the basics.
Hey Tim, might be a good idea to update this video, Selenium now uses Service objects to run the Drivers.
Ty
how can i download the chrome driver now??@@NewCyZ
Time ago i was starting to understand Slenium! and now we have your selenium tutorial!! YEEES!
I think you are the best teacher for python. I learned a lot from your beginner's python course (4hours) and now I hope to learn more from this course. Thank you.
This would be a great series your fans would watch it.
I just made a tinder auto swiping bot yesterday and was thinking to learn more about selenium and this video pops up. Great timing and awesome videos man! Keep up the good work.
What a timing man. I was just thinking of starting web scraping 😁
Great video btw
Same here !!
Same!
Glad to hear guys🙂
the new ps5 i would think
@@toshibiswas3115 what?
right after i finished the course, i wrote a programm that will spam join a kahoot game that crashes game whenever teacher gives out the code, and i'll let my programm pick some inappropreate name, anyway love your courses
this is really great Tim, thanks a lot, very concise and up to details, less garbage talks, very focused on the topic.
thanks
Man!!! You are a legend. Actually I already downloaded selenium and webdriver but You have answered all problems that I was straglling when I was trying to download. You deserve more than subscribtion and likes
If your tab closes automatically after you run the code and you are using VS Code, Try to run the code right-clicking anywhere in the editor and select Run Python File in Terminal. I was running the code pressing F5, I tried this and it worked
thank u
Thank you :)
thank you
--- Thank you, M de mr - I was having that very problem and now it's solved ! --- 20NOV22
same here, but tab keeps quitting...
I've been waiting for this tutorial from you for so long. Thanks Timmmm!!!!
FYI: For the Chrome driver on Windows, you can use chromedriver-binary library "pip install chromedriver-binary" in case you have trouble with the dowloaded driver.
@T Bone Have you fixed the issue?
@@jaredgarbo3679 I'm also having this same issue incase you managed to fix it..
❤
I love it. Unlike other tutorial authors, this one was well-prepared for the presentation.
I work in education and the quality of your tutorials is better than 90% of the teachers I have worked with! Keep up the awesome work!
Awesome man, thanks for the vid! Took me a while to figure out why I was getting an error message in my terminal...It's super important that the PATH = "/Applications/chromedriver" (this is where it was for me) for Mac user is written correctly, otherwise it won't be able to find the chromedriver ... Anyways great video, will be watching the other vids.. nice work
very important indeed. Took me ages but felt so relieved in the end
It's been taking me forever to find this out too! LOL
Bruh your channel is omnipresent.
We have been waiting for this, finally!!!! So thanks Sir
Let tech with Tim
Better than a Udemy course. What a king you are
Great explanations, easy to follow, just what I needed to get started. Definitely earned my subscription. Thanks man.
This was the best tutorial I've seen on youtube so far. Thank you very much. Hope you get what you deserve with your effort.
Huge fan! Keep up the good work :)
finally someone that knows what they are talkin about i been searching for ever for a video like this :)
this has some potential but no matter what I tried it doesn't work , tried it on the mac .windows same issue 'str' has no capabilities and nowhere to go from there
Great video which needs to go viral. The power to do this stuff is pretty sick
Oh... wow...
Never thought I would see Selenium on this channel...
Wow...
the best python teacher in the world 💓💓
I just started learning Selenium and the first problem I encountered was that selenium will automatically close the window if no action is made. So basically if you run the code in this video the window will stay opened for like 2 seconds then it will be shutdown. However I found a solution, add "while True: pass" in the end of the script. I hope it helps!
this helped me, thank u 👍
Even Though is an old version o selenium, Im impressed with the way you teach.. Great Job 👏
For this tutorial series, could we build some sort of notification system that uses web scraping?
Yes I made notifications straight to my phone with spontit or discord and use web scraping you can even permanently change variables with txt files and other cool stuff
Jesus Christ is God and is the only way. Hell is real whether you believe it or not.
@@omgcyanide4642 how did you do this?
@@SquidBeats somebody successfully made a bot
So clear so clean. Thank you sir, there is no one else who explains it as well as you.
I’ll definitely be following these videos! Will help with my work!!
Me too lol
Best video in whole RUclips.
Love your videos Tim, so well presented. Thank you you're really helping me as a newbie Python programmer.
thank you so much. This is about the only tutorial I cant find out there that makes sense and goes through each move step by step. Defo gonna keep coming back to this channel
I enjoyed the video so much, but there is an update for newer versions of chrome.
You shoould do this :
from selenium import webdriver
PATH = "C:\\Program Files\\chromedriver-win64\\chromedriver.exe"
cService = webdriver.ChromeService(executable_path=PATH)
driver = webdriver.Chrome(service = cService)
Instead of passing the executable_path to Chrome() directly.
thanks, it help a lot. the chrome web driver change a lot. i think tim need to rework this tutorial
... actually had some issues setting up selenium, this little video helped me, so Thanks..
I tried it like you did here 9:30, but why does it not show the chrome window when I run the code, instead the chrome opens for a sec and quits... I did everything right.
So concise and to the point. Makes it look easy.
if your code dosnt work put an r before the string in path for example- r"C:\Program Files (x86)"
Thanks, but why does this work?
@@williamanstett5305 thanks!
do you know how to get the path to a file on a chromebook?
I found this immensely helpful, I used to have to put double slashes in the file path every time.
legend
This video is gold! I have needed to scrape in two different computers and i´ve come back to install everything, cause its so well explained. pls keep it online forever (L)
Great Video man!! Please do make more videos on this! Also make a video on how to setup Sublime text
This is a top tier tutorial series! Thank you a lot, you're a legend dude!
big thanks, it is really good to see that you explain everything clearly and step are not left out : )
I was looking for a selenium tutorial and couldn't find one that was atleast a year ago, Please upload the next parts asap
Also amazing video, Keep up the good work
This is the tutorial i was looking for, very clear, you have a new subsc
Hello everyone! I am getting this error: "AttributeError: 'str' object has no attribute 'capabilities' ". Has anyone encountered the same error message? If so, may I ask how did you fix it?
replace
driver = webdriver.Chrome("PATH")
with
driver = webdriver.Chrome()
@@MissGurung_AI Had the same error. Thank you
@@MissGurung_AI I've also had the same issue, but when I do that I get an error "Error getting version of chromedriver 115. Retrying with chromedriver 114 (attempt 1/5)". And it opens like a debug? version of chrome, while I'd want it to open with my regular chrome browser.
Any ideas? I'm running chrome *.171, but the chromedriver I downloaded id *.170. Is that the issue?
"Chromedriver needs to be in PATH" ERROR keeps poping up for me. I already added them to my system environment. Still the same error. Any advice?
Bro copy the path, from your filemanager, and do // instead of /.
Try this:
PATH=(r"C:\Program Files\dowload/chromedriver.exe")
Basically PATH=(r"file_location/file_name.exe")
Use r’filelocation\\filename’
@@mananmalhotra792 thank you for answering my post. What does the "r" function do exactly & why do dome coding tutorials like this one not have them? It's confusing. When should/ shouldn't I use it?
@@markbrown5365 for example, if I wanted the string ‘something
’ it would create the string ‘something’, but it would have a new line at the end. If instead I did r’something
’, it would just be ‘something
’.
can someone please share the link for download the chrome driver for chrome version 118x
Hey Tim. Great videos series! I am really learning a lot - thank you so much. One idea for a future video might be how to set up headless Selenium on a remote server :)
I was expecting this tut
Could you please start a new series after this where you will teach
Basic to advance projects with ML in py
Btw thanks for such a good content
It would be the best day ;D
yes also agree with your statement
ruclips.net/video/WFr2WgN9_xE/видео.html
Look at Sentdex channel
I learnt python from you . Thank you very much Tim .
May 2024: Following the instructions and using
"
from selenium import webdriver
service = webdriver.ChromeService(executable_path = 'C:\Program Files (x86)\chromedriver.exe')
driver = webdriver.Chrome(service=service)
"
worked for me, otherwise an error appears: " 'str' object has no attribute 'capabilities' "
it shows unicode error smthng and i fixed it by adding (path= r'C:\Users .....the path ..')
Really whatever this man teaches sits in my brain very nicely. Thank you so much and I like your vids very much.
when i try to do import selenium, it won’t work. import shows up as text not a command. help
got the same struggle
Tried the same and i got this error:
12296:26672:0420/163936.459:ERROR:browser_switcher_service.cc(238) XXX Init()
Any help would b of great use
i got this too
1:48 Debian includes standard packages for python3-selenium, chromium-driver and phantomjs. Both the latter two are listed as dependencies for the first one.
Nice, I was suggesting you to make a selenium tutorial. It's really fun for newbies!
msg = f"Unable to obtain driver for {options.capabilities['browserName']} using Selenium Manager."
^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'capabilities'
Just great, man ! Very easy and uncomplicated! Congrats!
Keep up!
I hope RUclips had more of so useful stuff like this!
need this :V keep upload
Your python tutorial videos are very useful to me as a beginner.Hope you will upload more tutorial on other useful python module.Thank you very much.
Yes, this guy is legit. Ask any concept you are having trouble with.
Linux/MacOS:
pip = install modules on python 2
pip3 = install modules on python 3
Leonardo Neute If your python is up to date pip would also be python 3, since python 2 has been phased out. At least this is the case on my Linux machine.
Also you can run pip -V to make sure you are using the correct version.
Mason DiGiorgio in that case you should have only one version of python installed, using ubuntu
You can install chrome driver by using "chocolaty" by the command " choco install chromedriver" it will install the chrome driver if you have chocolaty installeed and then you will not have to add the path each time. The code will be as:-
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("google.com")
If you want to completely automate the process, chocolaty have sample of script to download it either by powershell or cmd, so you can make a cmd script that downloads chocolaty and then tells it to download the next thing.
@@ownzuall yep I know but I that that would be a bit difficult for someone who has no experience in batch files
Heads up, in 2024, doing: "driver = webdriver.Chrome(PATH)" will throw an error.
It can be fixed by removing PATH, like this: "driver = webdriver.Chrome()"
thank u brother this worked 👍
Thank you!
WebDriverException: Message: chrome not reachable
I couldn't find the particular exception, but I'd look through this selenium-python.readthedocs.io/api.html#module-selenium.webdriver.chrome.webdriver if no luck I'd try the Firefox driver
what is your PATH
@@lovely-shrubbery8578 I believe that I used another path withing a folder, so that worked out fine. Now, I get empty results when scraping from tradingeconomics.com/commodities tables.
A little progress, but now if arrays, those results come back empty. If anyone can try getting data from those tables, what will be great. Also tried bs4 to get into the classes of td, tr, etc. No results.. Thanks.
If anybody is getting the error:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
Add an 'r' before the path PATH = r"C:\"
Thank you!
still didn't help
@GucciVittion thanks, that's helpful. it wasn't my problem actually, but I got it fixed so it's okay. (solution: add executable path=r before the driver, but not for PATH)
Nice tutorial! I used geckodriver and it works fine too; but path/'driver' variables must be different with gecko:
driver = webdriver.Firefox(executable_path=r'PATH\geckodriver.exe')
took me a while to find out, so I'll just leave it here.
It was driving me crazy hahahaha. Thanks for the tip!
If chrome closes immediately after launching then add this to the code at end
while(True):
pass
For those who watch this video years after it posted. I think a few things are changed:
1) you do not need to download the web driver anymore. Just use
driver = webdriver.Chrome()
2) if you open a page and it closes immediately, add the following (assuming you are using Chrome as well):
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options= options)
These are two main issues I had when I was coding along. Took me sometime to figure out a solution. Hope it helps.
Hi Tim thank you for your help
And I have a question
Why sometimes selenium act weird, like sometimes the send keys and click method will not work even if I have no errors. This is a huge strange problem it not true in every case if I had a script which not working because of the send keys issue but I copy the code and paste in a another file it worked , why is this?
I ran into something similar. Rerun PIP import selenium. Also make sure you're running import selenium from webdriver
having error as in "chromedriver.exe"
Same here . Your's resolved?
@@akittensjournal check the description (second link)
same
@@ronkzedonk The description of what? Chrome driver? Nothing useful in there or I can't see it. How did you solve the error?
Real talk: Is there anyone out there who's advanced enough to want to use Selenium but basic enough that they don't know what Pip is nor how to install Python packages?
no
me(?
Yep!
Yeah so I know pip is what you use to install python packages? But it’s real easy for me to forget and I actually had to look up what it meant bc I was having problems with pathing and needed to fix. Installing the packages are easy but i had to to learn about relative and absolute paths and I watched a video and learned that my files locations were all jacked up and the video fixed that issue for me.
I’m learning on my own and at my new job we do some data entry for new hires. We have to get id copy paste from one form to another. One of the big things is when the forms don’t match it kicks an error report and we manually go through looking for the mismatch. We have to get the new hires to fill out a paper and then we trial by error find the mistake.
My first day I was like woah this is tedious and time consuming I bet I could find a way to get the information from the forms compare them and where they don’t match have the correct info put into the form. So here I am learning how to do that :)
Basically me
Thanks for explaining pip. I think people doing tutorials or guides for whichever language or framework are kind of allergic to explaining package managers and assume that everyone knows what they are talking about.
Wow...just amazing...and finally proper English spoken :)
Short and sweet, you always have excellent videos.
informative and amazing as always.Thank you Tim for these tutorials!
hey tim, im from brazil and love your yt channel, thank to do a good work and teach a lot of people
Bro everything I search for you have a tutorial, great work
lets goooo this is wat ive been waiting for
Great video! I am excited for the next ones in this series!
Selenium is insanely powerful. Super fun to use.