proxy.js

1// Copyright 2013 Selenium committers
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15/**
16 * @fileoverview Defines functions for configuring a webdriver proxy:
17 *
18 * var webdriver = require('selenium-webdriver'),
19 * proxy = require('selenium-webdriver/proxy');
20 *
21 * var driver = new webdriver.Builder()
22 * .withCapabilities(webdriver.Capabilities.chrome())
23 * .setProxy(proxy.manual({http: 'host:1234'}))
24 * .build();
25 */
26
27'use strict';
28
29var util = require('util');
30
31
32
33// PUBLIC API
34
35
36/**
37 * Configures WebDriver to bypass all browser proxies.
38 * @return {!webdriver.ProxyConfig} A new proxy configuration object.
39 */
40exports.direct = function() {
41 return {proxyType: 'direct'};
42};
43
44
45/**
46 * Manually configures the browser proxy. The following options are
47 * supported:
48 *
49 * - `ftp`: Proxy host to use for FTP requests
50 * - `http`: Proxy host to use for HTTP requests
51 * - `https`: Proxy host to use for HTTPS requests
52 * - `bypass`: A list of hosts requests should directly connect to,
53 * bypassing any other proxies for that request. May be specified as a
54 * comma separated string, or a list of strings.
55 *
56 * Behavior is undefined for FTP, HTTP, and HTTPS requests if the
57 * corresponding key is omitted from the configuration options.
58 *
59 * @param {{ftp: (string|undefined),
60 * http: (string|undefined),
61 * https: (string|undefined),
62 * bypass: (string|!Array.<string>|undefined)}} options Proxy
63 * configuration options.
64 * @return {!webdriver.ProxyConfig} A new proxy configuration object.
65 */
66exports.manual = function(options) {
67 return {
68 proxyType: 'manual',
69 ftpProxy: options.ftp,
70 httpProxy: options.http,
71 sslProxy: options.https,
72 noProxy: util.isArray(options.bypass) ?
73 options.bypass.join(',') : options.bypass
74 };
75};
76
77
78/**
79 * Configures WebDriver to configure the browser proxy using the PAC file at
80 * the given URL.
81 * @param {string} url URL for the PAC proxy to use.
82 * @return {!webdriver.ProxyConfig} A new proxy configuration object.
83 */
84exports.pac = function(url) {
85 return {
86 proxyType: 'pac',
87 proxyAutoconfigUrl: url
88 };
89};
90
91
92/**
93 * Configures WebDriver to use the current system's proxy.
94 * @return {!webdriver.ProxyConfig} A new proxy configuration object.
95 */
96exports.system = function() {
97 return {proxyType: 'system'};
98};