Being an automation tester, my job is to automate everything. As I was running my test script via terminal I realised that Iām the only who can exe...
For further actions, you may consider blocking this person and/or reporting abuse
Thanks a ton brother for simple yet elegant walk through.
I have been trying so many tutorials and ways to get it to work but no luck.
With selenium version, chromedriver version and headless-chrome version as mentioned in the post, finally got it working. Thanks a bunch !
@jairaencio It's working great. But I can't use the
selenium-stealth
plugin. Getting an error.Message: unknown error: Chrome failed to start: exited abnormally\n (Driver info: .....
Hi @awolad I think you need to include the stealth library package in your lambda layer. Notice in my tutorial I have 2 different lambda layers for my selenium and chromedriver package. You can create another lambda layer or just simply include it in the 2 layers
@jairaencio Yes, I've added the stealth library package in the
selenium
lambda layer. There is no import error.Great! Always happy to help :)
@jairaencio Sorry, It's not solved yet. I mean the error is not related to the import the stealth package issue. Because the package is already in my lambda layer. The driver fails to load when the stealth package is used.
does the error only occur when you add selenium-stealth library? Upon checking I noticed that others are experiencing issue in their local machines just by using stealth. You could try adding options.add_argument("--disable-blink-features=AutomationControlled") . Then try if it works both on your local and lambda.
Yes.
With the
selenium-stealth
default options like following:I'm getting error:
Message: unknown error: Chrome failed to start: exited abnormally\n (Driver info: .....
By using this post options like following:
I'm getting error:
"'WebDriver' object has no attribute 'execute_cdp_cmd'"
I'm seeing this article related to "execute_cdp_cmd" error. Apparently they used pip install --pre selenium to be able to execute CDP commands github.com/SeleniumHQ/selenium/iss...
I also tried that but not working. I forgot to mention that. It would be helpful for us if you try with the
selenium-stealth
package and update this post. Because some websites we can't scrape without theselenium-stealth
package. Thanks!tested working.. good article. note that Python runtime has to be 3.6. It won't work otherwise.
Hey @jairaencio
Hello everyone, thanks for the guide. but it seems to me that this method no longer works without a Dockerimage.
I keep getting the error:
Python 3.9
Selenium 4.5.0
chromedriver 106.0.5249.61
headless-chromium v1.0.0-57
This is My Makefile to create all the stuff i need. At the end i do upload all what is inside the lambda Folder (Code + 2 Layers)
And here is a overview of my python script:
Is there another way to run it directly in a lambda without a docker image?
Best Regards
Great take on this achinšŖ I still havent gotten back on this but your method of using dockerimage is very useful for everyone as well šš½
I have the configuration propose on the edited version of the article but I get the same error. I created all the version on an amazon linux using the python3.9 command like in the example but I keep getting the same error.
Did you find any solution?
Yes it needs an special tool inside the docker image. I wil post it here today as soon as im on my computer
did you find any solution, please?
Hi Dear...were you able to get resolution of this issue. I am getting the same issue in my lambda.
Please share the resolution as I am completely stuck.
Surely many Devs and QA will benefit from this. Hopefully a demo can be made/shown
+1 to this, a demo would be great!
uhm hahaha
I'm getting the following error -
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary
(Driver info: chromedriver=2.37.544315(730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Linux 4.14.255-276-224.499.amzn2.x86_64 x86_64)
Could someone help me please? :(
Hi I am new to AWS lambda, so kindly apologize for any obvious questions...
I was able to create the 2 layers mentioned by you, for python and chromium.
But I have no idea how can I run serverless.yaml...
You've mentioned "sls deploy", but I don't have linux to run this.
Any other alternative to run this? Thanks
I'm not a windows user but here is what I found codegrepper.com/code-examples/shel...
@jairaencio
Hi, this error would likely happen if the location for your chromedriver is incorrect. (lambda layer)
Hi! I tried to run it in a Lambda function and the execution keeps running until it get the 600 seconds timeout.
I had downloaded the chromium 93 driver and the headless chrome 93 as well.
I'm using the following code:
I'm guessting that the timeout issue is caused by deployment package size. You would have to use container images solve it.
Great work! A well-thought-out article, straightforward and concise. Looking forward more advanced implementations.
Hello! .
I just have one question. When I was uploading my image to Lambda, I noticed that it required a lot of memory, and I think that could significantly increase costs. What are the differences between layers and Docker in Lambda?
I was following this documentation and managed to do it for version 3.7, but I was unsuccessful with version 3.9. Some of the comments below suggest using Docker, but I realized that using Docker requires increasing the Lambda's memory. Do you know of any alternatives to using Docker that won't consume a lot of memory and increase costs
As of now there is nothing else other than docker to work with this. I dont recommend setting up an instance as well. We can only hope that aws improves their lambda pricing and memory.
@jairaencio
I tried the same stuff for Python3.8(same chrome driver as you did for 3.9) but got the below error. Please help
START RequestId: ce98c274-1b51-46a5-968e-cdabe1e08a2a Version: $LATEST
[ERROR] WebDriverException: Message: Service /opt/chromedriver unexpectedly exited. Status code was: 127
Traceback (most recent call last):
Ā Ā File "/var/task/lambda_function.py", line 13, in lambda_handler
Ā Ā Ā Ā driver = webdriver.Chrome('/opt/chromedriver')
Ā Ā File "/opt/python/selenium/webdriver/chrome/webdriver.py", line 69, in init
Ā Ā Ā Ā super().init(DesiredCapabilities.CHROME['browserName'], "goog",
Ā Ā File "/opt/python/selenium/webdriver/chromium/webdriver.py", line 89, in init
Ā Ā Ā Ā self.service.start()
Ā Ā File "/opt/python/selenium/webdriver/common/service.py", line 98, in start
Ā Ā Ā Ā self.assert_process_still_running()
Ā Ā File "/opt/python/selenium/webdriver/common/service.py", line 110, in assert_process_still_running
Ā Ā Ā Ā raise WebDriverException(END RequestId: ce98c274-1b51-46a5-968e-cdabe1e08a2a
REPORT RequestId: ce98c274-1b51-46a5-968e-cdabe1e08a2a Duration: 610.08 ms Billed Duration: 611 ms Memory Size: 128 MB Max Memory Used: 47 MB Init Duration: 253.40 ms
dev.to/achimgrolimund/comment/22d99 hi, you might want to follow this using dockerimage
@jairaencio Great blog for helping QA engineers. Can you please guide on how can we make it compatible with other python versions. I tried with 3.9 and it fails with below error.
"errorMessage": "Unable to import module 'lambda_function': No module named 'selenium'",
Thanks in advance.
Hi, i just also recently noticed the deprecation update on lambda. Might have to change everything starting from drivers. Will try my best to update post.
Live Demo here: youtu.be/qIcVGDEjtt4?t=3482 (part of the June Meetup)
Naks! Great job! Screenshots will be helpful too. And a milk-tea will do. Thanks! Ahahahhahaha. :)
Huge help! :)
Great help! Will definitely need more articles like this un the future.
Kudos Jai! Great tutorial indeed!
For reference, may you add as well some screenshots of the created cloudformation stack and s3 bucket on the output section? Thanks :D
Uploaded screenshots of cloudformation and s3 bucket. Thanks for the feedback :)
Good job jai! Very helpful!
Exactly what I needed! Thank you!
The article is very helpful! It brings automation to the next level. By having running automated tests in a more automated way, developers will be empowered to make sure their code runs optimally.
Great Job! Will definitely help a lot of Devs and QA! Adding screenshots of the output will make the job easier tho =)
I'm really new to Lambda, does anyone know how could I adapt this process to run with node 16.x instead of python?
You can select node on compatible runtimes however you would need nodejs language bindings installed in your layer directory. My selenium layer was compatible with python so you would have to find a same one compatible with node.
Well done, this is very informative!
This is AWSome! thank you!