0

I'm trying to understand the difference between the data-srcset and srcset attributes.

I need to get a photo by the srcset attribute, but I can only get it using data-srcset.

I don’t really understand what the problem is, if the principle by which I get it should be similar.

Let's say I have the following plan html code - html code.

Scenario #1:

when I try to get by data-srcset attribute like this:

 // class of the whole element
 liElements.forEach(liElement -> {
 
 ...
 // small photo
 Element imgElement = liElement.select("img").first(); // img of element
 String dataSrcElement = imgElement.attr("data-srcset"); // data-srcset for element of img
 //String srcsetElement = imgElement.attr("srcset"); // srcset for element of img

then there is no problem, but when I use the srcset attribute.

Scenario #2:

 // class of the whole element
 liElements.forEach(liElement -> {
 
 ...
 // small photo
 Element imgElement = liElement.select("img").first(); // img of element
 //String dataSrcElement = imgElement.attr("data-srcset"); // data-srcset for element of img
 String srcsetElement = imgElement.attr("srcset"); // srcset for element of img;

I'm attaching the screenshot as a proof below: enter image description here

I see that null. Can anyone suggest what the difference is?

Is it possible to get it somehow by srcset? If yes, how can this be done in your opinion?

enter image description here

(I need to get the photo for the first product in the existing forEach() loop)

Thank you in advance for your help.

asked Jun 14, 2023 at 14:44

1 Answer 1

1

Srcset is a new attribute which allows to specify different kind of images for different screen-sizes/orientation/display-types. It allows to define a list of different image resources along with size information, so that browser can pick the most appropriate image based on the actual device’s resolution.

Srcset gives the browser a choice. A lot of things can be used to select this choice like viewport size, users preferences, network condition and so on.

List<WebElementFacade> imageLink = driver.findElements(By.cssSelector("img[srcset]"));
 for (WebElementFacade imageLinks : imageLink) {
 BigMethod.pause(3000);
 if (!imageLinks.isDisplayed()) {
 return false;
 }
 }

Descriptors are just a way to show what kind of image is hidden behind the resource.

There are various kinds of descriptors:

  1. Density descriptor:
  • srcset="image.jpg, image-2X.jpg 2x" The display density values—the 1x, 2x, etc.—are referred to as display density descriptors.
  1. Width descriptor:
  • srcset="image-240.jpg 240w, image-640.jpg 640w".
  1. Size descriptor:
  • srcset="image-160.jpg 160w, image-320.jpg 320w, image-640.jpg 640w, image-1280.jpg 1280w" sizes="(max-width: 480px) 100vw, (max-width: 900px) 33vw, 254px">.

Test automation services achieve better quality with qasource that build test automation environments rapidly. It helps to capture images with srcset attribute.

Test automation services support image-set() attribute for a background image in CSS.

invzbl3
1191 silver badge8 bronze badges
answered Jun 15, 2023 at 12:29
1
  • Thank you a lot for sharing, I'll play with your snippet and mark it as accepted a bit later. Now I'm giving upvote for your time and detailed explanation. I appreciate it so much. Commented Jun 15, 2023 at 20:59

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.