Skip to content

[py] Remove logging API for non-Chromium browsers #15641

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions py/selenium/webdriver/chromium/webdriver.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from selenium.webdriver.common.driver_finder import DriverFinder
from selenium.webdriver.common.options import ArgOptions
from selenium.webdriver.common.service import Service
from selenium.webdriver.remote.command import Command
from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver


Expand Down Expand Up @@ -149,6 +150,33 @@ def get_issue_message(self):
session."""
return self.execute("getIssueMessage")["value"]

@property
def log_types(self):
"""Gets a list of the available log types.

Example:
--------
>>> driver.log_types
"""
return self.execute(Command.GET_AVAILABLE_LOG_TYPES)["value"]

def get_log(self, log_type):
"""Gets the log for a given log type.

Parameters:
-----------
log_type : str
- Type of log that which will be returned

Example:
--------
>>> driver.get_log('browser')
>>> driver.get_log('driver')
>>> driver.get_log('client')
>>> driver.get_log('server')
"""
return self.execute(Command.GET_LOG, {"type": log_type})["value"]

def set_sink_to_use(self, sink_name: str) -> dict:
"""Sets a specific sink, using its name, as a Cast session receiver
target.
Expand Down
28 changes: 0 additions & 28 deletions py/selenium/webdriver/remote/webdriver.py
Original file line number Diff line number Diff line change
Expand Up @@ -1174,34 +1174,6 @@ def orientation(self, value) -> None:
else:
raise WebDriverException("You can only set the orientation to 'LANDSCAPE' and 'PORTRAIT'")

@property
def log_types(self):
"""Gets a list of the available log types. This only works with w3c
compliant browsers.

Example:
--------
>>> driver.log_types
"""
return self.execute(Command.GET_AVAILABLE_LOG_TYPES)["value"]

def get_log(self, log_type):
"""Gets the log for a given log type.

Parameters:
-----------
log_type : str
- Type of log that which will be returned

Example:
--------
>>> driver.get_log('browser')
>>> driver.get_log('driver')
>>> driver.get_log('client')
>>> driver.get_log('server')
"""
return self.execute(Command.GET_LOG, {"type": log_type})["value"]

def start_devtools(self):
global devtools
if self._websocket_connection:
Expand Down
20 changes: 12 additions & 8 deletions py/test/selenium/webdriver/common/api_example_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,9 @@
# specific language governing permissions and limitations
# under the License.


import pytest

from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
Expand Down Expand Up @@ -274,17 +272,23 @@ def test_change_window_size(driver, pages):
assert size["height"] == newSize[1]


@pytest.mark.xfail_firefox(raises=WebDriverException)
@pytest.mark.xfail_remote
@pytest.mark.xfail_safari
@pytest.mark.xfail_ie(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_firefox(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_remote(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_safari(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_webkitgtk(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_wpewebkit(raises=AttributeError, reason="Logging API is no longer available")
def test_get_log_types(driver, pages):
pages.load("blank.html")
assert isinstance(driver.log_types, list)


@pytest.mark.xfail_firefox(raises=WebDriverException)
@pytest.mark.xfail_remote
@pytest.mark.xfail_safari
@pytest.mark.xfail_ie(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_firefox(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_remote(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_safari(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_webkitgtk(raises=AttributeError, reason="Logging API is no longer available")
@pytest.mark.xfail_wpewebkit()(raises=AttributeError, reason="Logging API is no longer available")
def test_get_log(driver, pages):
pages.load("blank.html")
for log_type in driver.log_types:
Expand Down