-
-
Notifications
You must be signed in to change notification settings - Fork 8.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
For the WPE port of WebKit Co-authored-by: David Burns <[email protected]>
- Loading branch information
1 parent
f812edd
commit 0d7e57a
Showing
6 changed files
with
226 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
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,88 @@ | ||
# 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): | ||
KEY = 'wpe:browserOptions' | ||
|
||
def __init__(self): | ||
self._binary_location = '' | ||
self._arguments = [] | ||
self._caps = DesiredCapabilities.WPEWEBKIT.copy() | ||
|
||
@property | ||
def capabilities(self): | ||
return self._caps | ||
|
||
def set_capability(self, name, value): | ||
"""Sets a capability.""" | ||
self._caps[name] = value | ||
|
||
@property | ||
def binary_location(self): | ||
""" | ||
Returns the location of the browser binary otherwise an empty string | ||
""" | ||
return self._binary_location | ||
|
||
@binary_location.setter | ||
def binary_location(self, value): | ||
""" | ||
Allows you to set the browser binary to launch | ||
:Args: | ||
- value : path to the browser binary | ||
""" | ||
self._binary_location = value | ||
|
||
@property | ||
def arguments(self): | ||
""" | ||
Returns a list of arguments needed for the browser | ||
""" | ||
return self._arguments | ||
|
||
def add_argument(self, argument): | ||
""" | ||
Adds an argument to the list | ||
:Args: | ||
- Sets the arguments | ||
""" | ||
if argument: | ||
self._arguments.append(argument) | ||
else: | ||
raise ValueError("argument can not be null") | ||
|
||
def to_capabilities(self): | ||
""" | ||
Creates a capabilities with all the options that have been set and | ||
returns a dictionary with everything | ||
""" | ||
caps = self._caps | ||
|
||
browser_options = {} | ||
if self.binary_location: | ||
browser_options["binary"] = self.binary_location | ||
if self.arguments: | ||
browser_options["args"] = self.arguments | ||
|
||
caps[Options.KEY] = browser_options | ||
|
||
return caps |
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 WPEWebKitDriver | ||
""" | ||
|
||
def __init__(self, executable_path, port=0, log_path=None): | ||
""" | ||
Creates a new instance of the Service | ||
:Args: | ||
- executable_path : Path to the WPEWebKitDriver | ||
- port : Port the service is running on | ||
- log_path : Path for the WPEWebKitDriver 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,72 @@ | ||
# 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 WPEWebKitDriver and allows you to drive the browser. | ||
""" | ||
|
||
def __init__(self, executable_path="WPEWebDriver", port=0, options=None, | ||
desired_capabilities=DesiredCapabilities.WPEWEBKIT, | ||
service_log_path=None): | ||
""" | ||
Creates a new instance of the WPEWebKit driver. | ||
Starts the service and then creates new instance of WPEWebKit 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. | ||
- options : an instance of WPEWebKitOptions | ||
- desired_capabilities : Dictionary object with desired capabilities | ||
- service_log_path : Path to write service stdout and stderr output. | ||
""" | ||
if options is not None: | ||
capabilities = 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 WPEWebKitDriver executable | ||
that is started when starting the WPEWebKitDriver | ||
""" | ||
try: | ||
RemoteWebDriver.quit(self) | ||
except http_client.BadStatusLine: | ||
pass | ||
finally: | ||
self.service.stop() |