Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to save an image by selecting "save image as..." in a context menu using Selenium Webdriver (Python)

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?

like image 688
Luis Y Avatar asked Aug 10 '12 00:08

Luis Y


People also ask

How do I save an image using Selenium?

We can download images with Selenium webdriver in Python. First of all, we shall identify the image that we want to download with the help of the locators like id, class, xpath, and so on. We shall use the open method for opening the file in write and binary mode (is represented by wb).

How do I select an image in Selenium?

We can click on an image with Selenium webdriver in Python using the method click. First of all, we have to identify the image with the help of any of the locators like id, class, name, css, xpath, and so on. An image in the html code is represented by the img tagname. Let us see the html code of an image element.

How do you right click on an image in Selenium?

We can perform right click on an element in Selenium with the help of Actions. In order to perform the right click action we will use contextClick () method. First we need to move to the specific element with the help of moveToElement() method then will do the right click with contextClick() method.


1 Answers

If it's a captcha you're after, you're probably better off just taking a screenshot.

driver.save_screenshot('screenshot.png')
like image 85
kreativitea Avatar answered Oct 17 '22 21:10

kreativitea