Ниже приведен код, который мы используем для автоматизации 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
Пытаюсь автоматизировать iOS с помощью Appium, но не могу прокручивать и получаю ошибку ниже ⇐ IOS
Программируем под IOS
1720085362
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;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78706237/trying-to-automate-ios-using-appium-but-not-able-to-scroll-and-getting-the-below[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия