-
-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
9 changed files
with
238 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -44,6 +44,7 @@ | |
'PhantomJS', | ||
'Remote', | ||
'Safari', | ||
'WebKitGTK', | ||
) | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Licensed to the Software Freedom Conservancy (SFC) under one | ||
# or more contributor license agreements. See the NOTICE file | ||
# distributed with this work for additional information | ||
# regarding copyright ownership. The SFC licenses this file | ||
# to you under the Apache License, Version 2.0 (the | ||
# "License"); you may not use this file except in compliance | ||
# with the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, | ||
# software distributed under the License is distributed on an | ||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
# KIND, either express or implied. See the License for the | ||
# specific language governing permissions and limitations | ||
# under the License. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
# Licensed to the Software Freedom Conservancy (SFC) under one | ||
# or more contributor license agreements. See the NOTICE file | ||
# distributed with this work for additional information | ||
# regarding copyright ownership. The SFC licenses this file | ||
# to you under the Apache License, Version 2.0 (the | ||
# "License"); you may not use this file except in compliance | ||
# with the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, | ||
# software distributed under the License is distributed on an | ||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
# KIND, either express or implied. See the License for the | ||
# specific language governing permissions and limitations | ||
# under the License. | ||
|
||
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities | ||
|
||
|
||
class Options(object): | ||
|
||
def __init__(self): | ||
self._browser_executable_path = '' | ||
self._browser_arguments = [] | ||
self._overlay_scrollbars_enabled = True | ||
|
||
@property | ||
def browser_executable_path(self): | ||
""" | ||
Returns the location of the browser binary otherwise an empty string | ||
""" | ||
return self._browser_executable_path | ||
|
||
@browser_executable_path.setter | ||
def browser_executable_path(self, value): | ||
""" | ||
Allows you to set the browser binary to launch | ||
:Args: | ||
- value : path to the browser binary | ||
""" | ||
self._browser_executable_path = value | ||
|
||
@property | ||
def browser_arguments(self): | ||
""" | ||
Returns a list of arguments needed for the browser | ||
""" | ||
return self._browser_arguments | ||
|
||
def add_browser_argument(self, argument): | ||
""" | ||
Adds an argument to the list | ||
:Args: | ||
- Sets the arguments | ||
""" | ||
if argument: | ||
self._browser_arguments.append(argument) | ||
else: | ||
raise ValueError("argument can not be null") | ||
|
||
@property | ||
def overlay_scrollbars_enabled(self): | ||
""" | ||
Returns whether overlay scrollbars should be enabled | ||
""" | ||
return self._overlay_scrollbars_enabled | ||
|
||
@overlay_scrollbars_enabled.setter | ||
def overlay_scrollbars_enabled(self, value): | ||
""" | ||
Allows you to enable or disable overlay scrollbars | ||
:Args: | ||
- value : True or False | ||
""" | ||
self._overlay_scrollbars_enabled = value | ||
|
||
def to_capabilities(self): | ||
""" | ||
Creates a capabilities with all the options that have been set and | ||
returns a dictionary with everything | ||
""" | ||
webkitgtk = DesiredCapabilities.WEBKITGTK.copy() | ||
|
||
browser_options = {} | ||
if self.browser_executable_path: | ||
browser_options["binary"] = self.browser_executable_path | ||
browser_options["args"] = self.browser_arguments | ||
browser_options["useOverlayScrollbars"] = self.overlay_scrollbars_enabled | ||
|
||
webkitgtk["webkitgtk:browserOptions"] = browser_options | ||
|
||
return webkitgtk |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Licensed to the Software Freedom Conservancy (SFC) under one | ||
# or more contributor license agreements. See the NOTICE file | ||
# distributed with this work for additional information | ||
# regarding copyright ownership. The SFC licenses this file | ||
# to you under the Apache License, Version 2.0 (the | ||
# "License"); you may not use this file except in compliance | ||
# with the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, | ||
# software distributed under the License is distributed on an | ||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
# KIND, either express or implied. See the License for the | ||
# specific language governing permissions and limitations | ||
# under the License. | ||
|
||
from selenium.webdriver.common import service | ||
|
||
|
||
class Service(service.Service): | ||
""" | ||
Object that manages the starting and stopping of the WebKitGTKDriver | ||
""" | ||
|
||
def __init__(self, executable_path, port=0, log_path=None): | ||
""" | ||
Creates a new instance of the Service | ||
:Args: | ||
- executable_path : Path to the WebKitGTKDriver | ||
- port : Port the service is running on | ||
- log_path : Path for the WebKitGTKDriver service to log to | ||
""" | ||
log_file = open(log_path, "wb") if log_path is not None and log_path != "" else None | ||
service.Service.__init__(self, executable_path, port, log_file) | ||
|
||
def command_line_args(self): | ||
return ["-p", "%d" % self.port] | ||
|
||
def send_remote_shutdown_command(self): | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# Licensed to the Software Freedom Conservancy (SFC) under one | ||
# or more contributor license agreements. See the NOTICE file | ||
# distributed with this work for additional information | ||
# regarding copyright ownership. The SFC licenses this file | ||
# to you under the Apache License, Version 2.0 (the | ||
# "License"); you may not use this file except in compliance | ||
# with the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, | ||
# software distributed under the License is distributed on an | ||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
# KIND, either express or implied. See the License for the | ||
# specific language governing permissions and limitations | ||
# under the License. | ||
|
||
try: | ||
import http.client as http_client | ||
except ImportError: | ||
import httplib as http_client | ||
|
||
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities | ||
from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver | ||
from .service import Service | ||
|
||
|
||
class WebDriver(RemoteWebDriver): | ||
""" | ||
Controls the WebKitGTKDriver and allows you to drive the browser. | ||
""" | ||
|
||
def __init__(self, executable_path="WebKitWebDriver", port=0, | ||
browser_options=None, | ||
desired_capabilities=DesiredCapabilities.WEBKITGTK, | ||
service_log_path=None): | ||
""" | ||
Creates a new instance of the WebKitGTK driver. | ||
Starts the service and then creates new instance of WebKitGTK Driver. | ||
:Args: | ||
- executable_path : path to the executable. If the default is used it assumes the executable is in the $PATH. | ||
- port : port you would like the service to run, if left as 0, a free port will be found. | ||
- browser_options : an instance of WebKitGTKOptions | ||
- desired_capabilities : Dictionary object with desired capabilities | ||
- service_log_path : Path to write service stdout and stderr output. | ||
""" | ||
if browser_options is not None: | ||
capabilities = browser_options.to_capabilities() | ||
capabilities.update(desired_capabilities) | ||
desired_capabilities = capabilities | ||
|
||
self.service = Service(executable_path, port=port, log_path=service_log_path) | ||
self.service.start() | ||
|
||
RemoteWebDriver.__init__( | ||
self, | ||
command_executor=self.service.service_url, | ||
desired_capabilities=desired_capabilities) | ||
self._is_remote = False | ||
|
||
def quit(self): | ||
""" | ||
Closes the browser and shuts down the WebKitGTKDriver executable | ||
that is started when starting the WebKitGTKDriver | ||
""" | ||
try: | ||
RemoteWebDriver.quit(self) | ||
except http_client.BadStatusLine: | ||
pass | ||
finally: | ||
self.service.stop() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters