blob: cdff989d8bea8db472a439f82fadc32bf1faeb9d [file] [log] [blame] [edit]
// <copyright file="WebDriverError.cs" company="Selenium Committers">
// 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.
// </copyright>
using System;
using System.Collections.Generic;
namespace OpenQA.Selenium;
/// <summary>
/// Represents an error condition from a remote end using the W3C specification
/// dialect of the wire protocol.
/// </summary>
internal static class WebDriverError
{
/// <summary>
/// Represents the element click intercepted error.
/// </summary>
public const string ElementClickIntercepted = "element click intercepted";
/// <summary>
/// Represents the element not interactable error.
/// </summary>
public const string ElementNotInteractable = "element not interactable";
/// <summary>
/// Represents the insecure certificate error.
/// </summary>
public const string InsecureCertificate = "insecure certificate";
/// <summary>
/// Represents the invalid argument error.
/// </summary>
public const string InvalidArgument = "invalid argument";
/// <summary>
/// Represents the invalid cookie domain error.
/// </summary>
public const string InvalidCookieDomain = "invalid cookie domain";
/// <summary>
/// Represents the invalid element state error.
/// </summary>
public const string InvalidElementState = "invalid element state";
/// <summary>
/// Represents the invalid selector error.
/// </summary>
public const string InvalidSelector = "invalid selector";
/// <summary>
/// Represents the invalid session ID error.
/// </summary>
public const string InvalidSessionId = "invalid session id";
/// <summary>
/// Represents the unhandled JavaScript error.
/// </summary>
public const string JavaScriptError = "javascript error";
/// <summary>
/// Represents the move target out of bounds error.
/// </summary>
public const string MoveTargetOutOfBounds = "move target out of bounds";
/// <summary>
/// Represents the no such alert error.
/// </summary>
public const string NoSuchAlert = "no such alert";
/// <summary>
/// Represents the no such cookie error.
/// </summary>
public const string NoSuchCookie = "no such cookie";
/// <summary>
/// Represents the no such element error.
/// </summary>
public const string NoSuchElement = "no such element";
/// <summary>
/// Represents the no such alert frame.
/// </summary>
public const string NoSuchFrame = "no such frame";
/// <summary>
/// Represents the no such alert window.
/// </summary>
public const string NoSuchWindow = "no such window";
/// <summary>
/// Represents the no such shadow root error.
/// </summary>
public const string NoSuchShadowRoot = "no such shadow root";
/// <summary>
/// Represents the script timeout error.
/// </summary>
public const string ScriptTimeout = "script timeout";
/// <summary>
/// Represents the session not created error.
/// </summary>
public const string SessionNotCreated = "session not created";
/// <summary>
/// Represents the stale element reference error.
/// </summary>
public const string StaleElementReference = "stale element reference";
/// <summary>
/// Represents the detached shadow root error.
/// </summary>
public const string DetachedShadowRoot = "detached shadow root";
/// <summary>
/// Represents the timeout error.
/// </summary>
public const string Timeout = "timeout";
/// <summary>
/// Represents the unable to set cookie error.
/// </summary>
public const string UnableToSetCookie = "unable to set cookie";
/// <summary>
/// Represents the unable to capture screen error.
/// </summary>
public const string UnableToCaptureScreen = "unable to capture screen";
/// <summary>
/// Represents the unexpected alert open error.
/// </summary>
public const string UnexpectedAlertOpen = "unexpected alert open";
/// <summary>
/// Represents the unknown command error.
/// </summary>
public const string UnknownCommand = "unknown command";
/// <summary>
/// Represents an unknown error.
/// </summary>
public const string UnknownError = "unknown error";
/// <summary>
/// Represents the unknown method error.
/// </summary>
public const string UnknownMethod = "unknown method";
/// <summary>
/// Represents the unsupported operation error.
/// </summary>
public const string UnsupportedOperation = "unsupported operation";
private static readonly Dictionary<string, WebDriverResult> resultMap = new Dictionary<string, WebDriverResult>
{
{ ElementClickIntercepted, WebDriverResult.ElementClickIntercepted },
{ ElementNotInteractable, WebDriverResult.ElementNotInteractable },
{ InsecureCertificate, WebDriverResult.InsecureCertificate },
{ InvalidArgument, WebDriverResult.InvalidArgument },
{ InvalidCookieDomain, WebDriverResult.InvalidCookieDomain },
{ InvalidElementState, WebDriverResult.InvalidElementState },
{ InvalidSelector, WebDriverResult.InvalidSelector },
{ InvalidSessionId, WebDriverResult.NoSuchDriver },
{ JavaScriptError, WebDriverResult.UnexpectedJavaScriptError },
{ MoveTargetOutOfBounds, WebDriverResult.MoveTargetOutOfBounds },
{ NoSuchAlert, WebDriverResult.NoAlertPresent },
{ NoSuchCookie, WebDriverResult.NoSuchCookie },
{ NoSuchElement, WebDriverResult.NoSuchElement },
{ NoSuchFrame, WebDriverResult.NoSuchFrame },
{ NoSuchWindow, WebDriverResult.NoSuchWindow },
{ NoSuchShadowRoot, WebDriverResult.NoSuchShadowRoot },
{ ScriptTimeout, WebDriverResult.AsyncScriptTimeout },
{ SessionNotCreated, WebDriverResult.SessionNotCreated },
{ StaleElementReference, WebDriverResult.ObsoleteElement },
{ DetachedShadowRoot, WebDriverResult.DetachedShadowRoot },
{ Timeout, WebDriverResult.Timeout },
{ UnableToSetCookie, WebDriverResult.UnableToSetCookie },
{ UnableToCaptureScreen, WebDriverResult.UnableToCaptureScreen },
{ UnexpectedAlertOpen, WebDriverResult.UnexpectedAlertOpen },
{ UnknownCommand, WebDriverResult.UnknownCommand },
{ UnknownError, WebDriverResult.UnknownError },
{ UnknownMethod, WebDriverResult.UnknownMethod },
{ UnsupportedOperation, WebDriverResult.UnsupportedOperation }
};
/// <summary>
/// Converts a string error to a <see cref="WebDriverResult"/> value.
/// </summary>
/// <param name="error">The error string to convert.</param>
/// <returns>The converted <see cref="WebDriverResult"/> value.</returns>
/// <exception cref="ArgumentNullException">If <paramref name="error"/> is <see langword="null"/>.</exception>
public static WebDriverResult ResultFromError(string error)
{
if (!resultMap.TryGetValue(error, out WebDriverResult result))
{
return WebDriverResult.UnsupportedOperation;
}
return result;
}
}