类org.openqa.selenium.remote.Dialect源码实例Demo

下面列出了怎么用org.openqa.selenium.remote.Dialect的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: selenium   文件: ProtocolConverter.java
public ProtocolConverter(
  Tracer tracer,
  HttpClient client,
  Dialect downstream,
  Dialect upstream) {
  this.tracer = Require.nonNull("Tracer", tracer);
  this.client = Require.nonNull("HTTP client", client);

  this.downstream = getCommandCodec(Require.nonNull("Downstream dialect", downstream));
  this.downstreamResponse = getResponseCodec(downstream);

  this.upstream = getCommandCodec(Require.nonNull("Upstream dialect", upstream));
  this.upstreamResponse = getResponseCodec(upstream);

  converter = new JsonToWebElementConverter(null);

  newSessionConverter = downstream == W3C ? this::createW3CNewSessionResponse : this::createJwpNewSessionResponse;
}
 
源代码2 项目: selenium   文件: ServicedSession.java
@Override
protected ServicedSession newActiveSession(
    DriverService service,
    Dialect downstream,
    Dialect upstream,
    HttpHandler codec,
    SessionId id,
    Map<String, Object> capabilities) {
  return new ServicedSession(
      service,
      downstream,
      upstream,
      codec,
      id,
      capabilities);
}
 
源代码3 项目: selenium   文件: RemoteSession.java
protected RemoteSession(
    Dialect downstream,
    Dialect upstream,
    HttpHandler codec,
    SessionId id,
    Map<String, Object> capabilities) {
  this.downstream = Require.nonNull("Downstream dialect", downstream);
  this.upstream = Require.nonNull("Upstream dialect", upstream);
  this.codec = Require.nonNull("Codec", codec);
  this.id = Require.nonNull("Session id", id);
  this.capabilities = Require.nonNull("Capabilities", capabilities);

  File tempRoot = new File(StandardSystemProperty.JAVA_IO_TMPDIR.value(), id.toString());
  Require.stateCondition(tempRoot.mkdirs(), "Could not create directory %s", tempRoot);
  this.filesystem = TemporaryFilesystem.getTmpFsBasedOn(tempRoot);

  CommandExecutor executor = new ActiveSessionCommandExecutor(this);
  this.driver = new Augmenter().augment(new RemoteWebDriver(
      executor,
      new ImmutableCapabilities(getCapabilities())));
}
 
源代码4 项目: selenium   文件: ProtocolConvertingSession.java
protected ProtocolConvertingSession(
    Tracer tracer,
    HttpClient client,
    SessionId id,
    URL url,
    Dialect downstream,
    Dialect upstream,
    Capabilities capabilities) {
  super(id, url, downstream, upstream, capabilities);

  Require.nonNull("HTTP client", client);

  if (downstream.equals(upstream)) {
    this.handler = new ReverseProxyHandler(tracer, client);
  } else {
    this.handler = new ProtocolConverter(tracer, client, downstream, upstream);
  }

  this.killUrl = "/session/" + id;
}
 
源代码5 项目: selenium   文件: CapabilityResponseEncoder.java
/**
 * Create a UTF-8 encoded response for a given dialect for use with the New Session command.
 */
private static byte[] encodeAsResponse(
    Dialect dialect,
    SessionId id,
    Capabilities capabilities,
    Map<String, Object> metadata) {

  Map<String, Object> toEncode;

  switch (dialect) {
    case OSS:
      toEncode = encodeJsonWireProtocol(id, capabilities, metadata);
      break;

    case W3C:
      toEncode = encodeW3C(id, capabilities, metadata);
      break;

    default:
      throw new IllegalArgumentException("Unknown dialect: " + dialect);
  }

  return JSON.toJson(toEncode).getBytes(UTF_8);
}
 
源代码6 项目: selenium   文件: BaseActiveSession.java
protected BaseActiveSession(
    SessionId id,
    URL url,
    Dialect downstream,
    Dialect upstream,
    Capabilities capabilities) {
  URI uri = null;
  try {
    uri = Require.nonNull("URL", url).toURI();
  } catch (URISyntaxException e) {
    throw new IllegalArgumentException(e);
  }

  this.session = new Session(
      Require.nonNull("Session id", id),
      uri,
      ImmutableCapabilities.copyOf(Require.nonNull("Capabilities", capabilities)));

  this.downstream = Require.nonNull("Downstream dialect", downstream);
  this.upstream = Require.nonNull("Upstream dialect", upstream);
}
 
源代码7 项目: selenium   文件: InMemorySession.java
private InMemorySession(WebDriver driver, Capabilities capabilities, Dialect downstream) {
  this.driver = Require.nonNull("Driver", driver);

  Capabilities caps;
  if (driver instanceof HasCapabilities) {
    caps = ((HasCapabilities) driver).getCapabilities();
  } else {
    caps = capabilities;
  }

  this.capabilities = caps.asMap().entrySet().stream()
      .filter(e -> e.getValue() != null)
      .collect(ImmutableMap.toImmutableMap(Map.Entry::getKey, Map.Entry::getValue));

  this.id = new SessionId(UUID.randomUUID().toString());
  this.downstream = Require.nonNull("Downstream dialect", downstream);

  File tempRoot = new File(StandardSystemProperty.JAVA_IO_TMPDIR.value(), id.toString());
  Require.stateCondition(tempRoot.mkdirs(), "Could not create directory %s", tempRoot);
  this.filesystem = TemporaryFilesystem.getTmpFsBasedOn(tempRoot);

  this.handler = new JsonHttpCommandHandler(
      new PretendDriverSessions(),
      LOG);
}
 
源代码8 项目: selenium   文件: InMemorySession.java
@Override
public Optional<ActiveSession> apply(CreateSessionRequest sessionRequest) {
  Require.nonNull("Session creation request", sessionRequest);

  // Assume the blob fits in the available memory.
  try {
    if (!provider.canCreateDriverInstanceFor(sessionRequest.getCapabilities())) {
      return Optional.empty();
    }

    WebDriver driver = provider.newInstance(sessionRequest.getCapabilities());

    // Prefer the OSS dialect.
    Set<Dialect> downstreamDialects = sessionRequest.getDownstreamDialects();
    Dialect downstream = downstreamDialects.contains(Dialect.OSS) || downstreamDialects.isEmpty() ?
                         Dialect.OSS :
                         downstreamDialects.iterator().next();
    return Optional.of(
        new InMemorySession(driver, sessionRequest.getCapabilities(), downstream));
  } catch (IllegalStateException e) {
    return Optional.empty();
  }
}
 
源代码9 项目: selenium   文件: DistributorTest.java
private Node createNode(Capabilities stereotype, int count, int currentLoad) {
  URI uri = createUri();
  LocalNode.Builder builder = LocalNode.builder(tracer, bus, uri, uri, null);
  for (int i = 0; i < count; i++) {
    builder.add(stereotype, new TestSessionFactory((id, caps) -> new HandledSession(uri, caps)));
  }

  LocalNode node = builder.build();
  for (int i = 0; i < currentLoad; i++) {
    // Ignore the session. We're just creating load.
    node.newSession(new CreateSessionRequest(
        ImmutableSet.copyOf(Dialect.values()),
        stereotype,
        ImmutableMap.of()));
  }

  return node;
}
 
源代码10 项目: selenium   文件: DriverServiceSessionFactoryTest.java
@Test
public void shouldNotInstantiateSessionIfRemoteEndReturnsInvalidResponse() throws IOException {
  HttpClient httpClient = mock(HttpClient.class);
  when(httpClient.execute(any(HttpRequest.class))).thenReturn(
      new HttpResponse().setStatus(200).setContent(() -> new ByteArrayInputStream(
          "Hello, world!".getBytes())));
  when(clientFactory.createClient(any(URL.class))).thenReturn(httpClient);

  DriverServiceSessionFactory factory = factoryFor("chrome", builder);

  Optional<ActiveSession> session = factory.apply(new CreateSessionRequest(
      ImmutableSet.of(Dialect.W3C), toPayload("chrome"), ImmutableMap.of()));

  assertThat(session).isEmpty();

  verify(builder, times(1)).build();
  verifyNoMoreInteractions(builder);
  verify(driverService, times(1)).start();
  verify(driverService, atLeastOnce()).getUrl();
  verify(driverService, times(1)).stop();
  verifyNoMoreInteractions(driverService);
}
 
源代码11 项目: selenium   文件: DriverServiceSessionFactoryTest.java
@Test
public void shouldInstantiateSessionIfEverythingIsOK() throws IOException {
  HttpClient httpClient = mock(HttpClient.class);
  when(httpClient.execute(any(HttpRequest.class))).thenReturn(
      new HttpResponse().setStatus(200).setContent(() -> new ByteArrayInputStream(
          "{ \"value\": { \"sessionId\": \"1\", \"capabilities\": {} } }".getBytes())));
  when(clientFactory.createClient(any(URL.class))).thenReturn(httpClient);

  DriverServiceSessionFactory factory = factoryFor("chrome", builder);

  Optional<ActiveSession> session = factory.apply(new CreateSessionRequest(
      ImmutableSet.of(Dialect.W3C), toPayload("chrome"), ImmutableMap.of()));

  assertThat(session).isNotEmpty();

  verify(builder, times(1)).build();
  verifyNoMoreInteractions(builder);
  verify(driverService, times(1)).start();
  verify(driverService, atLeastOnce()).getUrl();
  verifyNoMoreInteractions(driverService);
}
 
源代码12 项目: selenium   文件: ActiveSessionFactoryTest.java
@Test
public void factoriesFoundViaServiceLoadersAreUsedFirst() {
  WebDriver driver = Mockito.mock(WebDriver.class);
  Capabilities caps = new ImmutableCapabilities("browserName", "chrome");
  DriverProvider provider = new StubbedProvider(caps, driver);

  ActiveSessionFactory sessionFactory = new ActiveSessionFactory(new NullTracer()) {
    @Override
    protected Iterable<DriverProvider> loadDriverProviders() {
      return ImmutableSet.of(provider);
    }
  };

  ActiveSession session = sessionFactory.apply(
      new CreateSessionRequest(ImmutableSet.of(Dialect.W3C), caps, ImmutableMap.of()))
      .get();
  assertEquals(driver, session.getWrappedDriver());
}
 
源代码13 项目: selenium   文件: UploadFileTest.java
@Test
public void shouldWriteABase64EncodedZippedFileToDiskAndKeepName() throws Exception {
  ActiveSession session = mock(ActiveSession.class);
  when(session.getId()).thenReturn(new SessionId("1234567"));
  when(session.getFileSystem()).thenReturn(tempFs);
  when(session.getDownstreamDialect()).thenReturn(Dialect.OSS);

  File tempFile = touch(null, "foo");
  String encoded = Zip.zip(tempFile);

  UploadFile uploadFile = new UploadFile(new Json(), session);
  Map<String, Object> args = ImmutableMap.of("file", encoded);
  HttpRequest request = new HttpRequest(HttpMethod.POST, "/session/%d/se/file");
  request.setContent(asJson(args));
  HttpResponse response = uploadFile.execute(request);

  Response res = new Json().toType(string(response), Response.class);
  String path = (String) res.getValue();
  assertTrue(new File(path).exists());
  assertTrue(path.endsWith(tempFile.getName()));
}
 
源代码14 项目: qaf   文件: LiveIsExtendedWebDriver.java
private void setCodec() {
	try {
		CommandExecutor executor = getCommandExecutor();
		setField("commandCodec", executor, Dialect.W3C.getCommandCodec());
		setField("responseCodec", executor, Dialect.W3C.getResponseCodec());
	} catch (Throwable e) {
		logger.error("Unable to set W3C codec", e);
	}
}
 
源代码15 项目: selenium   文件: WebElementToJsonConverterTest.java
@Test
public void convertsAnArrayWithAWebElement() {
  RemoteWebElement element = new RemoteWebElement();
  element.setId("abc123");

  Object value = CONVERTER.apply(new Object[] { element });
  assertContentsInOrder(new ArrayList<>((Collection<?>) value),
      ImmutableMap.of(
        Dialect.OSS.getEncodedElementKey(), "abc123",
        Dialect.W3C.getEncodedElementKey(), "abc123"));
}
 
源代码16 项目: selenium   文件: WebElementToJsonConverterTest.java
private static void assertIsWebElementObject(Object value, String expectedKey) {
  assertThat(value).isInstanceOf(Map.class);

  Map<?, ?>  map = (Map<?, ?>) value;
  assertThat(map).hasSize(2);
  assertThat(map.containsKey(Dialect.OSS.getEncodedElementKey())).isTrue();
  assertThat(map.get(Dialect.OSS.getEncodedElementKey())).isEqualTo(expectedKey);
  assertThat(map.containsKey(Dialect.W3C.getEncodedElementKey())).isTrue();
  assertThat(map.get(Dialect.W3C.getEncodedElementKey())).isEqualTo(expectedKey);
}
 
源代码17 项目: selenium   文件: JsonHttpResponseCodecTest.java
@Test
public void shouldConvertElementReferenceToRemoteWebElement() {
  HttpResponse response = new HttpResponse();
  response.setStatus(HTTP_OK);
  response.setContent(asJson(ImmutableMap.of(
      "status", 0,
      "value", ImmutableMap.of(Dialect.OSS.getEncodedElementKey(), "345678"))));

  Response decoded = codec.decode(response);
  assertThat(((RemoteWebElement) decoded.getValue()).getId()).isEqualTo("345678");
}
 
源代码18 项目: selenium   文件: DockerSession.java
DockerSession(
    Container container,
    Tracer tracer,
    HttpClient client,
    SessionId id,
    URL url,
    Capabilities capabilities,
    Dialect downstream,
    Dialect upstream) {
  super(tracer, client, id, url, downstream, upstream, capabilities);
  this.container = Require.nonNull("Container", container);
}
 
源代码19 项目: selenium   文件: ProtocolConverter.java
private CommandCodec<HttpRequest> getCommandCodec(Dialect dialect) {
  switch (dialect) {
    case OSS:
      return new JsonHttpCommandCodec();

    case W3C:
      return new W3CHttpCommandCodec();

    default:
      throw new IllegalStateException("Unknown dialect: " + dialect);
  }
}
 
源代码20 项目: selenium   文件: ProtocolConverter.java
private ResponseCodec<HttpResponse> getResponseCodec(Dialect dialect) {
  switch (dialect) {
    case OSS:
      return new JsonHttpResponseCodec();

    case W3C:
      return new W3CHttpResponseCodec();

    default:
      throw new IllegalStateException("Unknown dialect: " + dialect);
  }
}
 
源代码21 项目: selenium   文件: ServicedSession.java
public ServicedSession(
    DriverService service,
    Dialect downstream,
    Dialect upstream,
    HttpHandler codec,
    SessionId id,
    Map<String, Object> capabilities) {
  super(downstream, upstream, codec, id, capabilities);

  this.service = service;

  new JMXHelper().register(this);
}
 
源代码22 项目: selenium   文件: RemoteSession.java
protected abstract ActiveSession newActiveSession(
X additionalData,
Dialect downstream,
Dialect upstream,
HttpHandler codec,
SessionId id,
Map<String, Object> capabilities);
 
源代码23 项目: selenium   文件: CreateSessionRequest.java
public CreateSessionRequest(
    Set<Dialect> downstreamDialects,
    Capabilities capabilities,
    Map<String, Object> metadata) {
  this.downstreamDialects = ImmutableSet.copyOf(
      Require.nonNull("Downstream dialects", downstreamDialects));
  this.capabilities = ImmutableCapabilities.copyOf(Require.nonNull("Capabilities", capabilities));
  this.metadata = ImmutableMap.copyOf(Require.nonNull("Metadata", metadata));
}
 
源代码24 项目: selenium   文件: CreateSessionRequest.java
private static CreateSessionRequest fromJson(JsonInput input) {
  Set<Dialect> downstreamDialects = null;
  Capabilities capabilities = null;
  Map<String, Object> metadata = null;

  input.beginObject();
  while (input.hasNext()) {
    switch (input.nextName()) {
      case "capabilities":
        capabilities = input.read(Capabilities.class);
        break;

      case "downstreamDialects":
        downstreamDialects = input.read(new TypeToken<Set<Dialect>>(){}.getType());
        break;

      case "metadata":
        metadata = input.read(MAP_TYPE);
        break;

      default:
        input.skipValue();
    }
  }
  input.endObject();

  return new CreateSessionRequest(downstreamDialects, capabilities, metadata);
}
 
源代码25 项目: selenium   文件: CapabilityResponseEncoder.java
public static ResponseEncoder<Session, Map<String, Object>, byte[]> getEncoder(Dialect dialect) {
  switch (dialect) {
    case OSS:
      return JWP_ENCODER;

    case W3C:
      return W3C_ENCODER;

    default:
      throw new IllegalArgumentException("Unrecognised dialect: " + dialect);
  }
}
 
源代码26 项目: selenium   文件: DriverServiceSessionFactoryTest.java
@Test
public void shouldNotInstantiateSessionIfCapabilitiesDoNotMatch() {
  DriverServiceSessionFactory factory = factoryFor("chrome", builder);

  Optional<ActiveSession> session = factory.apply(new CreateSessionRequest(
      ImmutableSet.of(Dialect.W3C), toPayload("firefox"), ImmutableMap.of()));

  assertThat(session).isEmpty();
  verifyNoInteractions(builder);
}
 
源代码27 项目: selenium   文件: DriverServiceSessionFactoryTest.java
@Test
public void shouldNotInstantiateSessionIfBuilderCanNotBuildService() {
  when(builder.build()).thenThrow(new WebDriverException());

  DriverServiceSessionFactory factory = factoryFor("chrome", builder);

  Optional<ActiveSession> session = factory.apply(new CreateSessionRequest(
      ImmutableSet.of(Dialect.W3C), toPayload("chrome"), ImmutableMap.of()));

  assertThat(session).isEmpty();
  verify(builder, times(1)).build();
  verifyNoMoreInteractions(builder);
}
 
源代码28 项目: selenium   文件: TestSessionFactory.java
@Override
public Optional<ActiveSession> apply(CreateSessionRequest sessionRequest) {
  SessionId id = new SessionId(UUID.randomUUID());
  Session session = sessionGenerator.apply(id, sessionRequest.getCapabilities());

  URL url = null;
  try {
    url = session.getUri().toURL();
  } catch (MalformedURLException e) {
    throw new UncheckedIOException(e);
  }

  Dialect downstream = sessionRequest.getDownstreamDialects().contains(W3C) ?
                       W3C :
                       sessionRequest.getDownstreamDialects().iterator().next();


  BaseActiveSession activeSession = new BaseActiveSession(
      session.getId(),
      url,
      downstream,
      W3C,
      session.getCapabilities()) {
    @Override
    public void stop() {
      // Do nothing
    }

    @Override
    public HttpResponse execute(HttpRequest req) throws UncheckedIOException {
      if (session instanceof HttpHandler) {
        return ((HttpHandler) session).execute(req);
      } else {
        // Do nothing.
        return new HttpResponse().setStatus(HTTP_NOT_FOUND).setContent(utf8String("No handler found for " + req));
      }
    }
  };
  return Optional.of(activeSession);
}
 
源代码29 项目: selenium   文件: ActiveSessionFactoryTest.java
@Test
public void canBindNewFactoriesAtRunTime() {
  ActiveSession session = Mockito.mock(ActiveSession.class);

  ActiveSessionFactory sessionFactory = new ActiveSessionFactory(new NullTracer())
      .bind(caps ->
                "cheese".equals(caps.getBrowserName()),
            new SessionFactory() {
              @Override
              public boolean test(Capabilities capabilities) {
                return true;
              }

              @Override
              public Optional<ActiveSession> apply(CreateSessionRequest sessionRequest) {
                return Optional.of(session);
              }
            });

  ActiveSession created = sessionFactory.apply(
      new CreateSessionRequest(
          ImmutableSet.copyOf(Dialect.values()),
          toPayload("cheese"),
          ImmutableMap.of()))
      .get();

  assertSame(session, created);
}
 
源代码30 项目: selenium   文件: UploadFileTest.java
@Test
public void shouldThrowAnExceptionIfMoreThanOneFileIsSent() throws Exception {
  ActiveSession session = mock(ActiveSession.class);
  when(session.getId()).thenReturn(new SessionId("1234567"));
  when(session.getFileSystem()).thenReturn(tempFs);
  when(session.getDownstreamDialect()).thenReturn(Dialect.OSS);

  File baseDir = Files.createTempDir();
  touch(baseDir, "example");
  touch(baseDir, "unwanted");
  String encoded = Zip.zip(baseDir);

  UploadFile uploadFile = new UploadFile(new Json(), session);
  Map<String, Object> args = ImmutableMap.of("file", encoded);
  HttpRequest request = new HttpRequest(HttpMethod.POST, "/session/%d/se/file");
  request.setContent(asJson(args));
  HttpResponse response = uploadFile.execute(request);

  try {
    new ErrorHandler(false).throwIfResponseFailed(
        new Json().toType(string(response), Response.class),
        100);
    fail("Should not get this far");
  } catch (WebDriverException ignored) {
    // Expected
  }
}
 
 类所在包
 类方法
 同包方法