csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
4.1 KiB
102 lines
4.1 KiB
#if APPIUM1
|
|
global using AppiumDriver = OpenQA.Selenium.Appium.AppiumDriver<OpenQA.Selenium.Appium.AppiumWebElement>;
|
|
global using WindowsDriver = OpenQA.Selenium.Appium.Windows.WindowsDriver<OpenQA.Selenium.Appium.AppiumWebElement>;
|
|
global using MacDriver = OpenQA.Selenium.Appium.Mac.MacDriver<OpenQA.Selenium.Appium.AppiumWebElement>;
|
|
#elif APPIUM2
|
|
global using AppiumWebElement = OpenQA.Selenium.Appium.AppiumElement;
|
|
global using AppiumDriver = OpenQA.Selenium.Appium.AppiumDriver;
|
|
global using WindowsDriver = OpenQA.Selenium.Appium.Windows.WindowsDriver;
|
|
global using MacDriver = OpenQA.Selenium.Appium.Mac.MacDriver;
|
|
#endif
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using OpenQA.Selenium;
|
|
using OpenQA.Selenium.Appium;
|
|
using OpenQA.Selenium.Appium.Enums;
|
|
using OpenQA.Selenium.Interactions;
|
|
using OpenQA.Selenium.Internal;
|
|
|
|
namespace Avalonia.IntegrationTests.Appium;
|
|
|
|
public static class AppiumDriverEx
|
|
{
|
|
#if APPIUM2
|
|
public static AppiumElement FindElement(this IFindsElement @this, By by)
|
|
{
|
|
return @this switch
|
|
{
|
|
AppiumDriver driver => driver.FindElement(by),
|
|
AppiumElement driver => driver.FindElement(by),
|
|
_ => throw new ArgumentOutOfRangeException(nameof(@this), @this, null)
|
|
};
|
|
}
|
|
|
|
public static IReadOnlyList<AppiumWebElement> FindElements(this IFindsElement @this, By by)
|
|
{
|
|
return @this switch
|
|
{
|
|
AppiumDriver driver => driver.FindElements(by),
|
|
AppiumElement driver => driver.FindElements(by),
|
|
_ => throw new ArgumentOutOfRangeException(nameof(@this), @this, null)
|
|
};
|
|
}
|
|
|
|
public static AppiumWebElement FindElementByAccessibilityId(this IFindsElement session, string criteria) =>
|
|
session.FindElement(MobileBy.AccessibilityId(criteria));
|
|
|
|
public static IReadOnlyList<AppiumWebElement> FindElementsByAccessibilityId(this IFindsElement session,
|
|
string criteria) =>
|
|
session.FindElements(MobileBy.AccessibilityId(criteria));
|
|
|
|
public static AppiumWebElement FindElementByName(this IFindsElement session, string criteria) =>
|
|
session.FindElement(MobileBy.Name(criteria));
|
|
|
|
public static IReadOnlyList<AppiumWebElement> FindElementsByName(this IFindsElement session, string criteria) =>
|
|
session.FindElements(MobileBy.Name(criteria));
|
|
|
|
public static AppiumWebElement FindElementByXPath(this IFindsElement session, string criteria) =>
|
|
session.FindElement(By.XPath(criteria));
|
|
|
|
public static IReadOnlyList<AppiumWebElement> FindElementsByXPath(this IFindsElement session, string criteria) =>
|
|
session.FindElements(By.XPath(criteria));
|
|
|
|
public static AppiumWebElement FindElementByClassName(this IFindsElement session, string criteria) =>
|
|
session.FindElement(By.ClassName(criteria));
|
|
|
|
public static IReadOnlyList<AppiumWebElement> FindElementsByClassName(this IFindsElement session, string criteria) =>
|
|
session.FindElements(By.ClassName(criteria));
|
|
|
|
public static AppiumWebElement FindElementByTagName(this IFindsElement session, string criteria) =>
|
|
session.FindElement(By.TagName(criteria));
|
|
|
|
public static IReadOnlyList<AppiumWebElement> FindElementsByTagName(this IFindsElement session, string criteria) =>
|
|
session.FindElements(By.TagName(criteria));
|
|
|
|
public static void AddAdditionalCapability(this AppiumOptions options, string name, object value)
|
|
{
|
|
if (name == MobileCapabilityType.AutomationName)
|
|
{
|
|
options.AutomationName = value.ToString();
|
|
}
|
|
else if (name == MobileCapabilityType.PlatformName)
|
|
{
|
|
options.PlatformName = value.ToString();
|
|
}
|
|
else
|
|
{
|
|
options.AddAdditionalAppiumOption(name, value);
|
|
}
|
|
}
|
|
#endif
|
|
|
|
public static Actions MoveToElementCenter(this Actions actions, AppiumWebElement element, int xOffset, int yOffset)
|
|
{
|
|
#if APPIUM2
|
|
// It's always Center in Appium 2
|
|
return actions.MoveToElement(element, xOffset, yOffset);
|
|
#else
|
|
return actions.MoveToElement(element, xOffset, yOffset, MoveToElementOffsetOrigin.Center);
|
|
#endif
|
|
}
|
|
}
|
|
|