Best Selenium code snippet using org.openqa.selenium.docker.Image.toString
Source:SauceDockerSessionFactory.java  
...128      return Either.left(new SessionNotCreatedException(message));129    }130    @SuppressWarnings("OptionalGetWithoutIsPresent")131    UsernameAndPassword usernameAndPassword =132      new UsernameAndPassword(userName.get().toString(), accessKey.get().toString());133    Optional<Object> dc =134      getSauceCapability(sessionRequest.getDesiredCapabilities(), "dataCenter");135    DataCenter dataCenter = DataCenter.US_WEST;136    if (dc.isPresent()) {137      dataCenter = DataCenter.fromString(String.valueOf(dc.get()));138    }139    Capabilities sessionReqCaps = removeSauceKey(sessionRequest.getDesiredCapabilities());140    LOG.info("Starting session for " + sessionReqCaps);141    int port = runningInDocker ? 4444 : PortProber.findFreePort();142    try (Span span = tracer.getCurrentContext().createSpan("docker_session_factory.apply")) {143      Map<String, EventAttributeValue> attributeMap = new HashMap<>();144      attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(),145                       EventAttribute.setValue(this.getClass().getName()));146      String logMessage = runningInDocker ? "Creating container..." :147                          "Creating container, mapping container port 4444 to " + port;148      LOG.info(logMessage);149      Container container = createBrowserContainer(port, sessionReqCaps);150      container.start();151      ContainerInfo containerInfo = container.inspect();152      String containerIp = containerInfo.getIp();153      URL remoteAddress = getUrl(port, containerIp);154      HttpClient client = clientFactory.createClient(remoteAddress);155      attributeMap.put("docker.browser.image", EventAttribute.setValue(browserImage.toString()));156      attributeMap.put("container.port", EventAttribute.setValue(port));157      attributeMap.put("container.id", EventAttribute.setValue(container.getId().toString()));158      attributeMap.put("container.ip", EventAttribute.setValue(containerInfo.getIp()));159      attributeMap.put("docker.server.url", EventAttribute.setValue(remoteAddress.toString()));160      LOG.info(161        String.format("Waiting for server to start (container id: %s, url %s)",162                      container.getId(),163                      remoteAddress));164      try {165        waitForServerToStart(client, Duration.ofMinutes(1));166      } catch (TimeoutException e) {167        span.setAttribute("error", true);168        span.setStatus(Status.CANCELLED);169        EXCEPTION.accept(attributeMap, e);170        attributeMap.put(AttributeKey.EXCEPTION_MESSAGE.getKey(),171                         EventAttribute.setValue(172                           "Unable to connect to docker server. Stopping container: " +173                           e.getMessage()));174        span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);175        container.stop(Duration.ofMinutes(1));176        String message = String.format(177          "Unable to connect to docker server (container id: %s)", container.getId());178        LOG.warning(message);179        return Either.left(new RetrySessionRequestException(message));180      }181      LOG.info(String.format("Server is ready (container id: %s)", container.getId()));182      Command command = new Command(183        null,184        DriverCommand.NEW_SESSION(sessionReqCaps));185      ProtocolHandshake.Result result;186      Response response;187      try {188        result = new ProtocolHandshake().createSession(client, command);189        response = result.createResponse();190        attributeMap.put(191          AttributeKey.DRIVER_RESPONSE.getKey(),192          EventAttribute.setValue(response.toString()));193      } catch (IOException | RuntimeException e) {194        span.setAttribute("error", true);195        span.setStatus(Status.CANCELLED);196        EXCEPTION.accept(attributeMap, e);197        attributeMap.put(198          AttributeKey.EXCEPTION_MESSAGE.getKey(),199          EventAttribute200            .setValue("Unable to create session. Stopping and  container: " + e.getMessage()));201        span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);202        container.stop(Duration.ofMinutes(1));203        String message = "Unable to create session: " + e.getMessage();204        LOG.log(Level.WARNING, message);205        return Either.left(new SessionNotCreatedException(message));206      }207      SessionId id = new SessionId(response.getSessionId());208      Capabilities capabilities = new ImmutableCapabilities((Map<?, ?>) response.getValue());209      Capabilities mergedCapabilities = capabilities.merge(sessionReqCaps);210      Container videoContainer = null;211      Optional<DockerAssetsPath> path = ofNullable(this.assetsPath);212      if (path.isPresent()) {213        // Seems we can store session assets214        String containerPath = path.get().getContainerPath(id);215        saveSessionCapabilities(mergedCapabilities, containerPath);216        String hostPath = path.get().getHostPath(id);217        videoContainer = startVideoContainer(mergedCapabilities, containerInfo.getIp(), hostPath);218      }219      Instant startTime = Instant.now();220      Instant videoStartTime = Instant.now();221      Dialect downstream = sessionRequest.getDownstreamDialects().contains(result.getDialect()) ?222                           result.getDialect() :223                           W3C;224      attributeMap.put(225        AttributeKey.DOWNSTREAM_DIALECT.getKey(),226        EventAttribute.setValue(downstream.toString()));227      attributeMap.put(228        AttributeKey.DRIVER_RESPONSE.getKey(),229        EventAttribute.setValue(response.toString()));230      SauceCommandInfo commandInfo = new SauceCommandInfo.Builder()231        .setStartTime(startTime.toEpochMilli())232        .setVideoStartTime(videoStartTime.toEpochMilli())233        .setEndTime(Instant.now().toEpochMilli())234        .setRequest(sessionReqCaps)235        .setResult(mergedCapabilities)236        .setPath("/session")237        .setHttpStatus(response.getStatus())238        .setHttpMethod(POST.name())239        .setStatusCode(0)240        .setScreenshotId(-1)241        .build();242      span.addEvent("Docker driver service created session", attributeMap);243      LOG.fine(String.format(244        "Created session: %s - %s (container id: %s)",245        id,246        capabilities,247        container.getId()));248      return Either.right(new SauceDockerSession(249        container,250        videoContainer,251        tracer,252        client,253        id,254        remoteAddress,255        stereotype,256        mergedCapabilities,257        downstream,258        result.getDialect(),259        startTime,260        assetsPath,261        usernameAndPassword,262        dataCenter,263        assetsUploaderImage,264        commandInfo,265        docker));266    }267  }268  private Container createBrowserContainer(int port, Capabilities sessionCapabilities) {269    Map<String, String> browserContainerEnvVars = getBrowserContainerEnvVars(sessionCapabilities);270    long browserContainerShmMemorySize = 2147483648L; //2GB271    ContainerConfig containerConfig = image(browserImage)272      .env(browserContainerEnvVars)273      .shmMemorySize(browserContainerShmMemorySize)274      .network(networkName);275    if (!runningInDocker) {276      containerConfig = containerConfig.map(Port.tcp(4444), Port.tcp(port));277    }278    return docker.create(containerConfig);279  }280  private Map<String, String> getBrowserContainerEnvVars(Capabilities sessionRequestCapabilities) {281    Optional<Dimension> screenResolution =282      ofNullable(getScreenResolution(sessionRequestCapabilities));283    Map<String, String> envVars = new HashMap<>();284    if (screenResolution.isPresent()) {285      envVars.put("SCREEN_WIDTH", String.valueOf(screenResolution.get().getWidth()));286      envVars.put("SCREEN_HEIGHT", String.valueOf(screenResolution.get().getHeight()));287    }288    Optional<TimeZone> timeZone = ofNullable(getTimeZone(sessionRequestCapabilities));289    timeZone.ifPresent(zone -> envVars.put("TZ", zone.getID()));290    return envVars;291  }292  private Container startVideoContainer(Capabilities sessionCapabilities,293                                        String browserContainerIp, String hostPath) {294    if (!recordVideoForSession(sessionCapabilities)) {295      return null;296    }297    int videoPort = 9000;298    Map<String, String> envVars = getVideoContainerEnvVars(299      sessionCapabilities,300      browserContainerIp);301    Map<String, String> volumeBinds = Collections.singletonMap(hostPath, "/videos");302    ContainerConfig containerConfig = image(videoImage)303      .env(envVars)304      .bind(volumeBinds)305      .network(networkName);306    if (!runningInDocker) {307      videoPort = PortProber.findFreePort();308      containerConfig = containerConfig.map(Port.tcp(9000), Port.tcp(videoPort));309    }310    Container videoContainer = docker.create(containerConfig);311    videoContainer.start();312    String videoContainerIp = runningInDocker ? videoContainer.inspect().getIp() : "localhost";313    try {314      URL videoContainerUrl = new URL(String.format("http://%s:%s", videoContainerIp, videoPort));315      HttpClient videoClient = clientFactory.createClient(videoContainerUrl);316      LOG.fine(String.format("Waiting for video recording... (id: %s)", videoContainer.getId()));317      waitForServerToStart(videoClient, Duration.ofMinutes(1));318    } catch (Exception e) {319      videoContainer.stop(Duration.ofSeconds(10));320      String message = String.format(321        "Unable to verify video recording started (container id: %s), %s", videoContainer.getId(),322        e.getMessage());323      LOG.warning(message);324    }325    LOG.info(String.format("Video container started (id: %s)", videoContainer.getId()));326    return videoContainer;327  }328  private Map<String, String> getVideoContainerEnvVars(Capabilities sessionRequestCapabilities,329                                                       String containerIp) {330    Map<String, String> envVars = new HashMap<>();331    envVars.put("DISPLAY_CONTAINER_NAME", containerIp);332    Optional<Dimension> screenResolution =333      ofNullable(getScreenResolution(sessionRequestCapabilities));334    screenResolution.ifPresent(dimension -> envVars335      .put("VIDEO_SIZE", String.format("%sx%s", dimension.getWidth(), dimension.getHeight())));336    return envVars;337  }338  private TimeZone getTimeZone(Capabilities sessionRequestCapabilities) {339    Optional<Object> timeZone =340      getSauceCapability(sessionRequestCapabilities, "timeZone");341    if (timeZone.isPresent()) {342      String tz =  timeZone.get().toString();343      if (Arrays.asList(TimeZone.getAvailableIDs()).contains(tz)) {344        return TimeZone.getTimeZone(tz);345      }346    }347    return null;348  }349  private Dimension getScreenResolution(Capabilities sessionRequestCapabilities) {350    Optional<Object> screenResolution =351      getSauceCapability(sessionRequestCapabilities, "screenResolution");352    if (!screenResolution.isPresent()) {353      return null;354    }355    try {356      String[] resolution = screenResolution.get().toString().split("x");357      int screenWidth = Integer.parseInt(resolution[0]);358      int screenHeight = Integer.parseInt(resolution[1]);359      if (screenWidth > 0 && screenHeight > 0) {360        return new Dimension(screenWidth, screenHeight);361      } else {362        LOG.warning("One of the values provided for screenResolution is negative, " +363                    "defaults will be used. Received value: " + screenResolution);364      }365    } catch (Exception e) {366      LOG.warning("Values provided for screenResolution are not valid integers or " +367                  "either width or height are missing, defaults will be used." +368                  "Received value: " + screenResolution);369    }370    return null;371  }372  private boolean recordVideoForSession(Capabilities sessionRequestCapabilities) {373    boolean recordVideo = true;374    Optional<Object> recordVideoCapability =375      getSauceCapability(sessionRequestCapabilities, "recordVideo");376    if (recordVideoCapability.isPresent()) {377      recordVideo = Boolean.parseBoolean(recordVideoCapability.get().toString());378    }379    return recordVideo;380  }381  private void saveSessionCapabilities(Capabilities sessionRequestCapabilities, String path) {382    String capsToJson = JSON.toJson(sessionRequestCapabilities);383    try {384      Files.createDirectories(Paths.get(path));385      Files.write(386        Paths.get(path, "sessionCapabilities.json"),387        capsToJson.getBytes(Charset.defaultCharset()));388    } catch (IOException e) {389      LOG.log(Level.WARNING,390              "Failed to save session capabilities", e);391    }...Source:DockerSessionFactory.java  
...101                       EventAttribute.setValue(this.getClass().getName()));102      LOG.info("Creating container, mapping container port 4444 to " + port);103      Container container = docker.create(image(image).map(Port.tcp(4444), Port.tcp(port)));104      container.start();105      attributeMap.put("docker.image", EventAttribute.setValue(image.toString()));106      attributeMap.put("container.port", EventAttribute.setValue(port));107      attributeMap.put("container.id", EventAttribute.setValue(container.getId().toString()));108      attributeMap.put("docker.server.url", EventAttribute.setValue(remoteAddress.toString()));109      LOG.info(String.format("Waiting for server to start (container id: %s)", container.getId()));110      try {111        waitForServerToStart(client, Duration.ofMinutes(1));112        span.addEvent("Container started. Docker server ready.", attributeMap);113      } catch (TimeoutException e) {114        span.setAttribute("error", true);115        span.setStatus(Status.CANCELLED);116        EXCEPTION.accept(attributeMap, e);117        attributeMap.put(AttributeKey.EXCEPTION_MESSAGE.getKey(),118                         EventAttribute.setValue("Unable to connect to docker server. Stopping container: " + e.getMessage()));119        span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);120        container.stop(Duration.ofMinutes(1));121        container.delete();122        LOG.warning(String.format(123            "Unable to connect to docker server (container id: %s)", container.getId()));124        return Optional.empty();125      }126      LOG.info(String.format("Server is ready (container id: %s)", container.getId()));127      Command command = new Command(128          null,129          DriverCommand.NEW_SESSION(sessionRequest.getCapabilities()));130      ProtocolHandshake.Result result;131      Response response;132      try {133        result = new ProtocolHandshake().createSession(client, command);134        response = result.createResponse();135        attributeMap.put(AttributeKey.DRIVER_RESPONSE.getKey(), EventAttribute.setValue(response.toString()));136      } catch (IOException | RuntimeException e) {137        span.setAttribute("error", true);138        span.setStatus(Status.CANCELLED);139        EXCEPTION.accept(attributeMap, e);140        attributeMap.put(AttributeKey.EXCEPTION_MESSAGE.getKey(),141                         EventAttribute.setValue("Unable to create session. Stopping and  container: " + e.getMessage()));142        span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);143        container.stop(Duration.ofMinutes(1));144        container.delete();145        LOG.log(Level.WARNING, "Unable to create session: " + e.getMessage(), e);146        return Optional.empty();147      }148      SessionId id = new SessionId(response.getSessionId());149      Capabilities capabilities = new ImmutableCapabilities((Map<?, ?>) response.getValue());150      Dialect downstream = sessionRequest.getDownstreamDialects().contains(result.getDialect()) ?151                           result.getDialect() :152                           W3C;153      attributeMap.put(AttributeKey.DOWNSTREAM_DIALECT.getKey(), EventAttribute.setValue(downstream.toString()));154      attributeMap.put(AttributeKey.DRIVER_RESPONSE.getKey(), EventAttribute.setValue(response.toString()));155      span.addEvent("Docker driver service created session", attributeMap);156      LOG.info(String.format(157          "Created session: %s - %s (container id: %s)",158          id,159          capabilities,160          container.getId()));161      return Optional.of(new DockerSession(162        container,163        tracer,164        client,165        id,166        remoteAddress,167        stereotype,168        capabilities,...Source:Image.java  
...35  public Set<String> getTags() {36    return summary.getRepoTags();37  }38  @Override39  public String toString() {40    new Json().toJson(summary);41    return "Image{" +42      "summary=" + summary +43      '}';44  }45}...toString
Using AI Code Generation
1Image image = new Image("selenium/standalone-chrome");2System.out.println(image.toString());3DockerContainer(Image image)4DockerContainer(String image)5DockerContainer(Image image, String name)6DockerContainer(String image, String name)7DockerContainer(Image image, String name, Map<String, String> env)8DockerContainer(String image, String name, Map<String, String> env)9DockerContainer(Image image, String name, Map<String, String> env, Map<String, String> labels)10DockerContainer(String image, String name, Map<String, String> env, Map<String, String> labels)11DockerContainer(Image image, String name, Map<String, String> env, Map<String, String> labels, Map<Integer, Integer> ports)12DockerContainer(String image, String name, Map<String, String> env, Map<String, String> labels, Map<Integer, Integer> ports)13DockerContainer(Image image, String name, Map<String, String> env, Map<String, String> labels, Map<Integer, Integer> ports, List<String> command)14DockerContainer(String image, String name, Map<String, String> env, Map<String, String> labels, Map<Integer, Integer> ports, List<String> command)15DockerContainer(Image image, String name, Map<String, String> env, Map<String, String> labels, Map<Integer, Integer> ports, List<String> command, Map<String, String> volumes)16DockerContainer(String image, String name, Map<String, String> env, Map<String, String> labels, Map<Integer, Integer> ports, List<String> command, Map<String, String> volumes)17DockerContainer(Image image, String name, Map<String, String> env, Map<String, String> labels, Map<Integer, Integer> ports, List<String> command, Map<String, String> volumes, Map<String, String> binds)18DockerContainer(String image, String name, Map<String, String> env, Map<String, String> labels, Map<Integer, Integer> ports, List<String> command, Map<String, String> volumes, Map<String, String> binds)toString
Using AI Code Generation
1String imageName = new Image("selenium/standalone-chrome-debug").toString();2Container container = new Container(imageName).start();3String containerName = container.toString();4Session session = new Session(containerName).start();5String sessionId = session.toString();6WebDriver driver = new RemoteWebDriver(sessionId);7driver.quit();8session.stop();9container.stop();toString
Using AI Code Generation
1import org.openqa.selenium.docker.Docker;2import org.openqa.selenium.docker.Image;3import org.openqa.selenium.docker.Container;4import org.openqa.selenium.docker.ContainerConfig;5import org.openqa.selenium.docker.ContainerInfo;6import org.openqa.selenium.docker.PortBinding;7Image image = Docker.getImage("selenium/standalone-chrome");8ContainerConfig config = ContainerConfig.builder()9    .setImage(image.toString())10    .setPortBindings(new PortBinding(4444, 4444))11    .build();12Container container = image.createContainer(config);13ContainerInfo info = container.run();14String containerId = info.getId();15container.stop();16container.remove();17image.remove();18String imageName = image.toString();19String imageId = image.getId();20String[] imageTags = image.getTags();21String digest = image.getDigest();22long size = image.getSize();23String creationDate = image.getCreated();24String architecture = image.getArchitecture();25String operatingSystem = image.getOperatingSystem();26String[] labels = image.getLabels();27String containerId = image.getContainer();28String containerConfig = image.getContainerConfig();29String dockerVersion = image.getDockerVersion();30String author = image.getAuthor();31String config = image.getConfig();32String parent = image.getParent();33String comment = image.getComment();34String[] history = image.getHistory();35String rootFileSystem = image.getRootFileSystem();36String containerConfig = image.getContainerConfig();37String containerConfig = image.getContainerConfig();toString
Using AI Code Generation
1import org.openqa.selenium.docker.Container;2import org.openqa.selenium.docker.Image;3import org.openqa.selenium.docker.VncRecordingMode;4import java.io.IOException;5public class DockerTest {6  public static void main(String[] args) throws IOException, InterruptedException {7    Image image = new Image("selenium/standalone-chrome-debug");8    Container container = image.createContainer()9        .withRecordingMode(VncRecordingMode.RECORD_ALL)10        .start();11    System.out.println("Container name: " + container.getName());12    container.stop();13    System.out.println("Container name: " + container.getName());14    System.out.println("Image name: " + image.toString());15    System.out.println("Container name: " + container.getName());16    container.remove();17  }18}toString
Using AI Code Generation
1[Image.java](github.com/SeleniumHQ/docker-s...) 2#### [SeleniumHQ/docker-selenium/blob/bd0c9d9f9e2d8c8f4d0b0c7b1b1b8ba8b0d0c0e9/src/main/java/org/openqa/selenium/docker/Image.java#L63-L63](github.com/SeleniumHQ/docker-s...)3      63. public String toString() {4[Image.java](github.com/SeleniumHQ/docker-s...) 5#### [SeleniumHQ/docker-selenium/blob/bd0c9d9f9e2d8c8f4d0b0c7b1b1b8ba8b0d0c0e9/src/main/java/org/openqa/selenium/docker/Image.java#L65-L69](github.com/SeleniumHQ/docker-s...)6      65.   return String.format("Image{id=%s, name=%s, version=%s, image=%s}",7      69.       image);8[Image.java](github.com/SeleniumHQ/docker-s...) 9#### [SeleniumHQ/docker-selenium/blob/bd0c9d9f9e2d8c8f4d0b0c7b1b1b8ba8b0d0c0e9/src/main/java/org/openqa/selenium/docker/Image.java#L71-L71](github.com/SeleniumHQ/docker-s...)10      71. }LambdaTest’s Selenium 4 tutorial is covering every aspects of Selenium 4 testing with examples and best practices. Here you will learn basics, such as how to upgrade from Selenium 3 to Selenium 4, to some advanced concepts, such as Relative locators and Selenium Grid 4 for Distributed testing. Also will learn new features of Selenium 4, such as capturing screenshots of specific elements, opening a new tab or window on the browser, and new protocol adoptions.
Upgrading From Selenium 3 To Selenium 4?: In this chapter, learn in detail how to update Selenium 3 to Selenium 4 for Java binding. Also, learn how to upgrade while using different build tools such as Maven or Gradle and get comprehensive guidance for upgrading Selenium.
What’s New In Selenium 4 & What’s Being Deprecated? : Get all information about new implementations in Selenium 4, such as W3S protocol adaption, Optimized Selenium Grid, and Enhanced Selenium IDE. Also, learn what is deprecated for Selenium 4, such as DesiredCapabilites and FindsBy methods, etc.
Selenium 4 With Python: Selenium supports all major languages, such as Python, C#, Ruby, and JavaScript. In this chapter, learn how to install Selenium 4 for Python and the features of Python in Selenium 4, such as Relative locators, Browser manipulation, and Chrom DevTool protocol.
Selenium 4 Is Now W3C Compliant: JSON Wireframe protocol is retiring from Selenium 4, and they are adopting W3C protocol to learn in detail about the advantages and impact of these changes.
How To Use Selenium 4 Relative Locator? : Selenium 4 came with new features such as Relative Locators that allow constructing locators with reference and easily located constructors nearby. Get to know its different use cases with examples.
Selenium Grid 4 Tutorial For Distributed Testing: Selenium Grid 4 allows you to perform tests over different browsers, OS, and device combinations. It also enables parallel execution browser testing, reads up on various features of Selenium Grid 4 and how to download it, and runs a test on Selenium Grid 4 with best practices.
Selenium Video Tutorials: Binge on video tutorials on Selenium by industry experts to get step-by-step direction from automating basic to complex test scenarios with Selenium.
LambdaTest also provides certification for Selenium testing to accelerate your career in Selenium automation testing.
Get 100 minutes of automation test minutes FREE!!
