问题:属性与指定值不匹配:
Validation Failure: Attribute 'Text' of element for item 'CommonRepository.MyApp.InfoTab.StatusWaitingForNewRound' does not match the specified value (actual='Status: Waiting for start', expected='Status: Waiting for a new round').
此回购项目的路径:.//text[@automationid='textGameStatus' and @text='Status: Waiting for a new round' or @text='Status: Waiting for start']
如你所见,我正在使用“或”,因此我希望它能接受其中一种或另一种,如果不存在,那么它应该失败,但实际上它不会这样。
我在这里做错了什么?谢谢。
答案 0 :(得分:0)
Ranorex路径只搜索应用程序中的元素。 Ranorex找到该元素,以防它具有文本值"状态:等待新一轮"或者"状态:等待开始"。在验证步骤中,您将根据特定值进行验证(状态:等待新一轮)。在我看来,等待开始并等待新一轮是两种不同的情况。
答案 1 :(得分:0)
如果您认为'状态:等待'是正确的值,为什么不使用带有(>)符号的开头:
//text[@automationid='textGameStatus' and @text~'Status: Waiting for.+']
或者您可以使用正则表达式(〜)符号:
#include "stdafx.h"
#include <Windows.h>
#include <cstdio>
#include <string>
using namespace std;
void NewProcess(LPWSTR cmd) {
printf("Argv Inside funcion: %s\n", cmd[1]);
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if (!CreateProcess(NULL,
cmd,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi)
)
{
printf("CreateProcess failed (%d).\n", GetLastError());
return;
}
printf("Process ID: %d Started", pi.dwProcessId);
WaitForSingleObject(pi.hProcess, INFINITE);
printf("\nProcess ID: %d Terminated!", pi.dwProcessId);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
void main(int argc, TCHAR *argv[])
{
char text[] = "calc.exe";
wchar_t wtext[20];
mbstowcs(wtext, text, strlen(text) + 1);
LPWSTR ptr = wtext;
NewProcess(ptr);
getchar();
}
或者您可以使用// text [@ automationid ='textGameStatus']创建一个repo项并读取其@text属性,然后将其与预定义的字符串列表(或用户代码中的正则表达式)进行比较。
不要忘记使用间谍验证您的回购项目是否适用于所有受支持的案例。
如果您正确映射了repo项目,它应该按预期工作。
希望它有所帮助!