Пытаюсь автоматизировать iOS с помощью Appium, но не могу прокручивать и получаю ошибку нижеIOS

Программируем под IOS
Ответить
Anonymous
 Пытаюсь автоматизировать iOS с помощью Appium, но не могу прокручивать и получаю ошибку ниже

Сообщение Anonymous »

Ниже приведен код, который мы используем для автоматизации iOS. В этой функции FindElement мы используем цикл while, который будет выполняться 10 раз и пытаться поместить захваченный элемент в границы (в представлении). Мы будем делать это до тех пор, пока элемент не выйдет за пределы или мы не выйдем за пределы. ScrollMaxRepeats.
Что я пытаюсь захватить и прокрутить?
Я захватываю элементы Spotify и Chrome, которые необходимо прокручивать
Когда я искал ошибку (Необработанная конечная точка …/wda/scroll на iOS # 19816), я нашел эту ошибку Необработанная конечная точка .../wda/scroll на iOS · Проблема № 19816 · appium/appium · GitHub и в соответствии с этим, когда Я даже понизил версию своего приложения до 6.0.0, но все равно не могу прокрутить вниз.
Моя конфигурация:
Appium: v2.5.1
uiautomator2@3.0. 1
xcuitest@6.2.0 (также проверено при переходе на версию 6.0.0)
Телефон iOS: 17.5.1
protected override IWebElement FindElement(AppiumMobileDriver driver)
{
var strategyPartList = strategy.StrategyParts.ToList();

//TODO: Remove the application node.
if (strategyPartList[0].Value == "XCUIElementTypeApplication")
{
strategyPartList.RemoveAt(0);
}

var iterationTimeout = TimeSpan.FromMilliseconds(options.Timeout.TotalMilliseconds / 10);
IWebElement element = null;

using (var cts = new CancellationTokenSource(options.Timeout))
{
var token = cts.Token;
var selector = CreateStrategiesBasedSelector(strategyPartList);
var bounds = new Rectangle(new Point(0, 0), driver.GetScreenSize());
var repeatsCount = 0;

while (token.IsCancellationRequested == false && IsNotPresentedInBounds(element, bounds))
{
driver.Driver.Manage().Timeouts().ImplicitWait = iterationTimeout;
element = Try(() => FindElement(driver.Driver, selector), driver.Log.Error);

if (IsNotPresentedInBounds(element, bounds) && options.ScrollDirection != NoScrolling)
{
driver.Driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(ManualScrollImplicitWait);

while (IsNotPresentedInBounds(element, bounds)
&& token.IsCancellationRequested == false && repeatsCount < options.ScrollMaxRepeats)
{
Try(() => ScrollTo(driver.Driver, options.ScrollDirection.ToLower()), driver.Log.Error);
element = Try(() => FindElement(driver.Driver, selector), driver.Log.Error);
repeatsCount++;
}
}
}

if (IsNotPresentedInBounds(element, bounds))
{
return null;
}
}

return element;
}

private bool IsNotPresentedInBounds(IWebElement element, Rectangle bounds)
{
return element is null || (element.Displayed || bounds.Contains(element.Location)) == false;
}

private void ScrollTo(IOSDriver driver, string direction)
{
var scrollObject = new Dictionary();
scrollObject.Add(“direction”, direction);
driver.ExecuteScript(“mobile: scroll”, scrollObject);
}

protected IWebElement Try(Func @do, Action logError)
{
try
{
return @do();
}
catch (NoSuchElementException)
{
}
catch (Exception ex)
{
logError(ex);
}
return null;
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... -the-below
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»