Раньше я использовал VBA для автоматизации SAP, теперь я использую C # с SAPFEWSELib для управления SAP.Я могу управлять кнопками или текстовыми полями, но я делаю что-то не так с полосами прокрутки и не знаю, в чем проблема.
Моя цель - использовать полосу прокрутки, но не в Table или GridView, в таких случаях я могу избежать прокруткино правила одинаковы, конечно.Я пытаюсь использовать класс SAPFEWSELib GuiScrollbar.Я могу использовать GuiButton, GuiStatusbar, GuiSession и многие другие.Мое приложение работает правильно, и пользователи запускают его на своих компьютерах, поэтому я предполагаю, что я правильно использую SAPFEWSELib, но я не разбираюсь в SAP и кодировании, поэтому ошибка может быть очень простой.
Ошибка, которую я получаю:
System.InvalidCastException: 'Невозможно привести объект COM типа' System .__ ComObject 'к типу интерфейса' SAPFEWSELib.GuiScrollbar '.Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{99CD4189-6B59-4596-B1DF-0C1121BB5240}' завершился ошибкой из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)). '
Я использую регистратор SAP и получаю ID из VBS, затем использую его в своем сценарии.Для типов объектов в SAp я создал свои собственные классы, например для кнопки:
public class SAPElementButton
{
GuiSession _session;
public string _Id;
public SAPElementButton(GuiSession session, string Id)
{
_session = session;
_Id = Id;
}
public void pressbutton()
{
{
GuiButton _SapButton = (GuiButton)_session.FindById(_session.Id.ToString() + _Id);
_SapButton.SetFocus();
_SapButton.Press();
}
}
}
Благодаря этому я могу создать объект своего класса, в котором я даю путь для использования методом FindByIDв методе класса.В приведенном выше примере я указываю идентификатор сессии и кнопки в качестве параметра для конструктора.В логической части, где я использую метод «кнопка», я могу избежать длинного идентификатора, который сделал бы мой код недоступным для просмотра.Это может показаться немного сложным и напряженным, но позвольте мне управлять сложной логикой.Приведенный выше код работает нормально, я прикрепил его, например
Проблема в том, что, когда я пытаюсь управлять полосой прокрутки, я получаю сообщение об ошибке, как указано выше:
public class SAPElementVerticalScrollbar
{
GuiSession _session;
public string _Id;
public SAPElementVerticalScrollbar(GuiSession session, string Id)
{
_session = session;
_Id = Id;
}
public void setScrollbar(int possition)
{
{
GuiScrollbar sAPElementVerticalScroll = (GuiScrollbar)_session.FindById(_session.Id.ToString() + _Id);
sAPElementVerticalScroll.Position=possition;
}
}
}
Если из-за ошибки такой Id недоступен, он понятен, но синтаксис выглядит нормальнои объект в SAP доступен.
Может быть, я использую неправильный класс из SAPFEWSELib или, может быть, есть еще один хороший .dll libray, который я не знаю, чтобы использовать вместо этого?Может быть, есть способ нажимать «стрелки» в ScrollBar как кнопки?Я надеюсь, что кто-то может помочь мне.Я получаю детали при необходимости. введите описание изображения здесь