Reputation: 353
I'm trying to use selenium webdriver to save a specific image to a directory. I was looking to do this by simulating a right click on the img element and selecting "save image as...". With the following code I can open the context menu, but I'm unable to select the correct option.
browser = WebDriver(executable_path=CHROMEDRIVER_PATH)
browser.get(URL)
img = browser.find_element_by_tag_name('img')
ActionChains(browser).context_click(img).perform()
I also tried:
ActionChains(browser).context_click(img).send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()
and using a shortcut ('v' seems to select "save image as...")
ActionChains(browser).context_click(img).send_keys('v').perform()
The image does not have a direct URL because it's a captcha image that is reloaded randomly on each click. The only way I found, for me to be able to process it, is to save it on the disk first (using "save image as..."). Saving the entire page does not save this specific image so it won't work as well.
Any ideas?
Upvotes: 6
Views: 9471
Reputation: 1462
I was having the similar problem and just now got a shortcut to save a image by using save as---
Step-1-right click on an image you wish to save
Step-2- press v.
Step-3-Enter to the directory window to save
Since i am a java programmer thats why i was not able to paste a code accordingly( question asked for python).
Upvotes: 1
Reputation: 1373
As suggested by kreativitea, a screenshot would be the way to go because CAPTCHA's were designed to prevent scripts from doing what you're trying to do. CAPTCHA's are meant to prevent session re-use. Here is a page describing session re-use.
Upvotes: 0
Reputation: 1791
If it's a captcha you're after, you're probably better off just taking a screenshot.
driver.save_screenshot('screenshot.png')
Upvotes: 4