我需要自动执行搜索功能,如下所示:
搜索字符串=(X * OR“Y”)和Z
进入此搜索系统时应断言结果。我的问题是:
1)如何在运算符之间设置优先级,因为如果有()那么应该执行它,并且用其结果检查搜索字符串的其他部分。
2)termi *可以终止,终结者。我们如何检查并断言
3)“堆栈溢出”表示结果应该完全匹配。我们怎样才能找到并断言
4)同样是NOT运算符,我们如何断言
如果您能提供任何帮助,请与我分享。
提前致谢。
答案 0 :(得分:0)
有些人如何使用StringBuffer设法在java中编写代码:)
我没有存储第一个块的结果和下一个进程的结果,而是根据searchString创建了一个字符串命令,如下所示,最后激活新创建的命令并验证答案。
就像whenevenever和来自searchString一样,我们插入&&运算符和OR ||运营商。
String[] arrSearch=searchString.split("\\s");
StringBuffer sb = new StringBuffer();
boolean skipFlag = false;
for(int i=0;i<arrSearch.length;i++){
System.out.println(arrSearch[i]);
if(!skipFlag && arrSearch[i].startsWith("\"")){
skipFlag = true;
continue;
}else if(skipFlag){
if(arrSearch[i].endsWith("\"")){
skipFlag = false;
continue;
}else{
continue;
}
}else if(arrSearch[i].startsWith("(")){
String temp = arrSearch[i].substring(1);
sb.append("(selenium.isTextPresent(" + temp + ")" + " ");
}else if(arrSearch[i].startsWith(")")){
String temp = arrSearch[i].substring(0,arrSearch[i].length()-1);
sb.append("selenium.isTextPresent(" + temp + "))" + " ");
}else if(arrSearch[i].equalsIgnoreCase("AND")){
sb.append("&&" + " ");
}else if(arrSearch[i].equalsIgnoreCase("OR")){
sb.append("||" + " ");
}else if(arrSearch[i].equalsIgnoreCase("NOT")){
sb.append("!");
}else if(arrSearch[i].endsWith("*")){
String temp = arrSearch[i].substring(0,arrSearch[i].length()-1);
sb.append("selenium.isTextPresent(\"//*[contains('" + temp + "')]\")" + " ");
}else{
sb.append("selenium.isTextPresent(" + arrSearch[i] + ")" + " ");
}