Java:String equals不适用于innerHTML文本

时间:2017-03-23 06:49:10

标签: java string selenium equals

我在java中使用Selenium来测试搜索向导,我需要点击当前日期。我试图遍历日历中的所有日期,如果与当前日期匹配,我点击它。

这里的问题是日期是隐藏的,所以我必须获取innerHTML属性,然后使用子字符串提取日期编号,然后将其与Calendar.getInstance().get(Calendar.DAY_OF_MONTH)进行比较,但我的条件每次都失败。尝试了str.trim()并尝试删除所有unicode字符,但没有任何效果。以下是代码:

WebElement day_of_month = AutoUtils.findElementByTagName(day, "span");
if(day_of_month!=null){
        String innerHtml = day_of_month.getAttribute("innerHTML");
        // innerHtml is "23<span class="buzz-message">Great price</span><i></i>"
       // where 23 is the date i need

        String exact_date = innerHtml.substring(0,innerHtml.indexOf("<span"));
        exact_date = exact_date.replaceAll("\\P{Print}", ""); // have also tried exact_date.trim();
        if(exact_date.equals(Calendar.getInstance().get(Calendar.DAY_OF_MONTH))){
                    day_of_month.click();
        } else{
             System.out.Println("not found");  //gets printed every time
        }
}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您必须将int值(日期)转换为String:

if (exact_date.equals(String.valueOf(Calendar.getInstance().get(Calendar.DAY_OF_MONTH)))) {
...
}

答案 1 :(得分:1)

尝试使用innerText而不是innerHTML。 innerText仅为您提供用户可见的内容。 innerHTML在其中提供了甚至html和javascripts。 你应该能够得到&#34; 23&#34;只是做一个简单的比较。

另外,如果您可以显示html,我们可能很容易帮助您。