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

Robotframework 尝试使用Robot框架中的SapGuiLibrary与SAP元素交互时出错,robotframework,sap-gui,Robotframework,Sap Gui,我正在使用SapGuiLibrary使用Robot框架自动化SAP GUI屏幕中的一些测试。要识别我正在使用脚本跟踪器的元素,并且我能够识别我想要与之交互的元素,但是当我单击它或更改字段的值时,我会收到错误消息: ValueError:找不到id为“wnd[0]/usr/tabsTAXI\u TABSTRIP\u OVERVIEW/tabpT01/ssubscreen\u BODY:SAPMV50A:1202/tblSAPMV50ATC\u LIPS\u OVER\u INB/txtLIPSD-

我正在使用SapGuiLibrary使用Robot框架自动化SAP GUI屏幕中的一些测试。要识别我正在使用脚本跟踪器的元素,并且我能够识别我想要与之交互的元素,但是当我单击它或更改字段的值时,我会收到错误消息:

ValueError:找不到id为“wnd[0]/usr/tabsTAXI\u TABSTRIP\u OVERVIEW/tabpT01/ssubscreen\u BODY:SAPMV50A:1202/tblSAPMV50ATC\u LIPS\u OVER\u INB/txtLIPSD-G\u 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\01/ssubSUBSCREEN_BODY:SAPMV50A:1202/tblSAPMV50ATC_LIPS_OVER_INB/txtLIPSD-G_LFIMG[2,0]
${Txt_DocCategory}      wnd[0]/usr/ctxtSP$00004-LOW
${Txt_Material}         wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/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$00023-LOW
${Txt_PurchasDoc}       wnd[0]/usr/ctxtSP$00005-LOW
${Txt_PurchasGroup}     wnd[0]/usr/ctxtSP$00006-LOW
${Txt_SelecParam}       wnd[0]/usr/ctxtSP$00010-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
这就是我从脚本跟踪器中得到的:

$ID=Invoke方法-object$session-methodName“findById”-methodParameter@(“wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/ssubscreen_BODY:SAPMV50A:1202/tblSAPMV50ATC_LIPS_OVER_INB/txtLIPSD-G LFIMG[2,0]”
设置属性-object$ID-propertyName“text”-propertyValue@(“5”)


问题是元素id中有一个反斜杠(
\
)。反斜杠(
\
)是Robot框架中的转义字符,被排除在外,因此要将其放在地址中,必须在地址中再放一个反斜杠,即,
\\\
因此Robot框架知道它需要解释它,而不是丢弃它。

我看到您确保(“应该相等”)当前SAP GUI屏幕是“SAP轻松访问…”,但是如何转到右侧屏幕在未找到的字段中“输入文本”?如果您仍然在SAP Easy Access屏幕上,那么您提到的字段找不到是正常的。您好@SandraRossi,为了更准确,我省略了部分代码。不要担心,因为我在正确的屏幕上。@SandraRossi我编辑了我的帖子并放入了我所有的代码,但我并不认为这是必要的。我没有答案,但我认为这可能与名称
tabpT\01
有关,其中
\
似乎被删除了(SapGuiLibrary bug,还是只有在消息输出时才出现?),或者子屏幕1202不在名为
tabpT\01
的选项卡下(我想这可能是因为选项卡是动态分配的)。也许你可以使用
获取值
截图
来帮助排除故障。你又对了@Sandra Rossi,非常感谢!\是RBF中的转义字符,我没有意识到它存在或已被删除,因此我输入了两个\\,测试通过。当我长大后,我想和你一样。:-)你可以把你的答案标为最佳答案。