Skip to content

Commit

Permalink
Updated .NET exception class hierarchy to better accommodate W3C comp…
Browse files Browse the repository at this point in the history
…liant end points
  • Loading branch information
jimevans committed Mar 6, 2018
1 parent c5c65e5 commit 4364c1e
Show file tree
Hide file tree
Showing 4 changed files with 150 additions and 2 deletions.
73 changes: 73 additions & 0 deletions dotnet/src/webdriver/ElementNotInteractableException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// <copyright file="ElementNotInteractableException.cs" company="WebDriver 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.Runtime.Serialization;

namespace OpenQA.Selenium
{
/// <summary>
/// The exception that is thrown when an element is not visible.
/// </summary>
[Serializable]
public class ElementNotInteractableException : InvalidElementStateException
{
/// <summary>
/// Initializes a new instance of the <see cref="ElementNotInteractableException"/> class.
/// </summary>
public ElementNotInteractableException()
: base()
{
}

/// <summary>
/// Initializes a new instance of the <see cref="ElementNotInteractableException"/> class with
/// a specified error message.
/// </summary>
/// <param name="message">The message that describes the error.</param>
public ElementNotInteractableException(string message)
: base(message)
{
}

/// <summary>
/// Initializes a new instance of the <see cref="ElementNotInteractableException"/> class with
/// a specified error message and a reference to the inner exception that is the
/// cause of this exception.
/// </summary>
/// <param name="message">The error message that explains the reason for the exception.</param>
/// <param name="innerException">The exception that is the cause of the current exception,
/// or <see langword="null"/> if no inner exception is specified.</param>
public ElementNotInteractableException(string message, Exception innerException)
: base(message, innerException)
{
}

/// <summary>
/// Initializes a new instance of the <see cref="ElementNotInteractableException"/> class with serialized data.
/// </summary>
/// <param name="info">The <see cref="SerializationInfo"/> that holds the serialized
/// object data about the exception being thrown.</param>
/// <param name="context">The <see cref="StreamingContext"/> that contains contextual
/// information about the source or destination.</param>
protected ElementNotInteractableException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}
73 changes: 73 additions & 0 deletions dotnet/src/webdriver/ElementNotSelectableException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// <copyright file="ElementNotSelectableException.cs" company="WebDriver 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.Runtime.Serialization;

namespace OpenQA.Selenium
{
/// <summary>
/// The exception that is thrown when an element is not visible.
/// </summary>
[Serializable]
public class ElementNotSelectableException : InvalidElementStateException
{
/// <summary>
/// Initializes a new instance of the <see cref="ElementNotInteractableException"/> class.
/// </summary>
public ElementNotSelectableException()
: base()
{
}

/// <summary>
/// Initializes a new instance of the <see cref="ElementNotInteractableException"/> class with
/// a specified error message.
/// </summary>
/// <param name="message">The message that describes the error.</param>
public ElementNotSelectableException(string message)
: base(message)
{
}

/// <summary>
/// Initializes a new instance of the <see cref="ElementNotInteractableException"/> class with
/// a specified error message and a reference to the inner exception that is the
/// cause of this exception.
/// </summary>
/// <param name="message">The error message that explains the reason for the exception.</param>
/// <param name="innerException">The exception that is the cause of the current exception,
/// or <see langword="null"/> if no inner exception is specified.</param>
public ElementNotSelectableException(string message, Exception innerException)
: base(message, innerException)
{
}

/// <summary>
/// Initializes a new instance of the <see cref="ElementNotInteractableException"/> class with serialized data.
/// </summary>
/// <param name="info">The <see cref="SerializationInfo"/> that holds the serialized
/// object data about the exception being thrown.</param>
/// <param name="context">The <see cref="StreamingContext"/> that contains contextual
/// information about the source or destination.</param>
protected ElementNotSelectableException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}
2 changes: 1 addition & 1 deletion dotnet/src/webdriver/ElementNotVisibleException.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ namespace OpenQA.Selenium
/// The exception that is thrown when an element is not visible.
/// </summary>
[Serializable]
public class ElementNotVisibleException : WebDriverException
public class ElementNotVisibleException : ElementNotInteractableException
{
/// <summary>
/// Initializes a new instance of the <see cref="ElementNotVisibleException"/> class.
Expand Down
4 changes: 3 additions & 1 deletion dotnet/src/webdriver/Remote/RemoteWebDriver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1380,8 +1380,10 @@ private static void UnpackAndThrowOnError(Response errorResponse)
case WebDriverResult.ObsoleteElement:
throw new StaleElementReferenceException(errorMessage);

case WebDriverResult.ElementNotDisplayed:
case WebDriverResult.ElementNotInteractable:
throw new ElementNotInteractableException(errorMessage);

case WebDriverResult.ElementNotDisplayed:
throw new ElementNotVisibleException(errorMessage);

case WebDriverResult.InvalidElementState:
Expand Down

0 comments on commit 4364c1e

Please sign in to comment.