【问题标题】:Automating search functionality using Selenium - Java使用 Selenium 自动化搜索功能 - Java
【发布时间】:2011-05-27 03:56:44
【问题描述】:

我需要自动执行以下搜索功能:

搜索字符串 = (X* OR "Y") AND Z

在进入这个搜索系统时应该断言结果。我的问题是:
1)如何在运算符之间设置优先级,因为如果有 () 则应该执行它,并且其结果是要检查搜索字符串的其他部分。 2) termi* 可以是终止符,终止符。我们如何检查并断言 3)“堆栈溢出”意味着结果应该完全匹配。我们如何找到并断言 4)同样的NOT运算符,我们如何断言 如果您能提供任何帮助,请与我分享。

提前致谢。

【问题讨论】:

  • 是不是像你搜索一个关键词,网页会出现很多结果?喜欢亚马逊产品搜索页面?另外,我不明白第一点。你能再解释一下吗。最后,如果您可以格式化您的问题,它将对我们有所帮助
  • 感谢您回复 A.J...是的,就像一个搜索引擎。关于第一行,当您看到搜索字符串时,您首先执行括号 () 内的命令,然后您必须再次执行其他部分的结果。所以这里我们使用运算符优先级的概念。首先是示例 您需要执行 (Termi* OR "Claim") 并检查其结果 - Result AND Court。主要在这里我列出了不同的运算符,例如 OR、AND、NOT、()、* RegExp。我必须编写一个代码来搜索查询“(X * OR “Y”)AND Z”并根据搜索字符串/查询断言显示的内容

标签: java selenium


【解决方案1】:

一些如何使用 StringBuffer 在 java 中编写代码 :)

我没有存储第一个块和下一个处理的结果,而是基于下面的 searchString 创建了一个字符串命令,最后触发了新创建的命令并验证了答案。

就像每当 AND 出现在 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] + ")" + " ");
            }

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    相关资源
    最近更新 更多