尝试使用 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 知道它需要解释它而不是丢弃它。
我正在使用 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 知道它需要解释它而不是丢弃它。