尝试使用 Robot Framework 中的 SapGuiLibrary 与 SAP 元素交互时出错

Error when trying to interact with an SAP element using the SapGuiLibrary from Robot Framework

我正在使用 SapGuiLibrary 在使用 Robot Framework 的 SAP GUI 屏幕中自动执行一些测试。为了识别我使用 Script Tracker 的元素,我能够识别我想要与之交互的元素,但是当我单击它或更改字段的值时,我收到错误消息:

ValueError: Cannot find element with id 'wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT01/ssubSUBSCREEN_BODY:SAPMV50A:1202/tblSAPMV50ATC_LIPS_OVER_INB/txtLIPSD-G_LFIMG[2,0]'

这是我正在做的事情:

*** Settings ***
Library     SapGuiLibrary
Resource    ../Resource/Login_PartLinQ.robot

*** Variables ***
${Btn_DeleteRow}        wnd[1]/tbar[0]/btn[14]
${SAP_Title}            /app/con[0]/ses[0]/wnd[0]/titl
${Tab_DocsXVendor}      wnd[0]/usr/cntlMEALV_GRID_CONTROL_VL31/shellcont/shell
${Txt_DeliveryQtd}      wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT/ssubSUBSCREEN_BODY:SAPMV50A:1202/tblSAPMV50ATC_LIPS_OVER_INB/txtLIPSD-G_LFIMG[2,0]
${Txt_DocCategory}      wnd[0]/usr/ctxtSP[=10=]004-LOW
${Txt_Material}         wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT/ssubSUBSCREEN_BODY:SAPMV50A:1202/tblSAPMV50ATC_LIPS_OVER_INB/ctxtLIPS-MATNR[1,0]
${Txt_MaterNumber}      wnd[0]/usr/ctxtS_MATNR-LOW
${Txt_Plant}            wnd[0]/usr/ctxtSP[=10=]023-LOW
${Txt_PurchasDoc}       wnd[0]/usr/ctxtSP[=10=]005-LOW
${Txt_PurchasGroup}     wnd[0]/usr/ctxtSP[=10=]006-LOW
${Txt_SelecParam}       wnd[0]/usr/ctxtSP[=10=]010-LOW

*** Keywords ***
### Given ###
that the user is logged into PartLinQ
  ${title}    Get Value    ${SAP_Title}
  Should Be Equal    ${title}    SAP Easy Access ${SPACE}-${SPACE} User Menu for test ID for automated Test Scripts 1

### When ###
the user update the Business Partner
  Run Transaction     VL31N
  Send Vkey           Shift + F4
  Input Text          ${Txt_MaterNumber}      VO 82713508
  Input Text          ${Txt_PurchasDoc}       1000005844
  Set Focus           ${Txt_PurchasGroup}
  Send Vkey           F2
  Click Element       ${Btn_DeleteRow}
  Set Focus           ${Txt_DocCategory}
  Send Vkey           F2
  Click Element       ${Btn_DeleteRow}
  Set Focus           ${Txt_SelecParam}
  Send Vkey           F2
  Click Element       ${Btn_DeleteRow}
  Set Focus           ${Txt_Plant}
  Send Vkey           F2
  Click Element       ${Btn_DeleteRow}
  Send Vkey           F8
  Select Table Row    ${Tab_DocsXVendor}    0
  Send Vkey           F8
  Input Text          ${Txt_DeliveryQtd}    5

这是我从 Script Tracker 得到的:

$ID = Invoke-Method -object $session -methodName "findById" -methodParameter @("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT/ssubSUBSCREEN_BODY:SAPMV50A:1202/tblSAPMV50ATC_LIPS_OVER_INB/txtLIPSD-G_LFIMG[2,0]");
Set-Property -object $ID -propertyName "text" -propertyValue @("5");

问题是 element_id 中有一个反斜杠 (\)。反斜杠(\)是Robot Framework中的转义字符,被排除在外,所以要将它放在地址中,需要在地址中再放一个反斜杠,即\所以Robot Framework 知道它需要解释它而不是丢弃它。