使用Java Selenium,如何使用unicode值选择此元素?

时间:2018-07-16 14:47:39

标签: java selenium unicode

我正在使用Java和Selenium进行测试。

我正在尝试单击关闭按钮,该按钮具有以下Unicode字符:\ue01d

该元素上的OuterHTML看起来像这样:

<input class="form-control btn btn-clear" style="font-family: MapIcons; 
padding: 0px;" value="" type="button">

我想使用以下方法尝试并选择它:

String className = "form-control btn btn-clear";
    String htmlElement = "input";
    String textToFind=""; // this should be unicode: \ue01d

    List<WebElement> elements = Common.findElementsUsingHtmlXpathClass(driver, htmlElement, className);

    Common.myPrint(thisClass + " elements count: " + elements.size());
    for (WebElement element : elements) {
        String text = element.getAttribute("value");
        if (text != null) {
            if (text != "") {
                text = text.trim();
                if(text.contains(textToFind)) {
                    return Common.scrollIntoView(element, driver);
                }
            }
        }
    }
    return false;

我想知道我应该在textToFind中添加什么。系统无法识别它已经发明的方形字符。它不能准确地复制和粘贴此元素。

请注意:此值\ue01d不是字符串,而是Unicode值!

1 个答案:

答案 0 :(得分:1)

由于您知道字符的unicode值,因此可以检查此值是否在这样的字符串中:

String s = "some string";
if (s.contains("unicode value")) { // for example '\ue01d'
  System.out.println("Contains!");
} else {
  System.out.println("Not contains");
}

在您的情况下是这样的:

String className = "form-control btn btn-clear";
    String htmlElement = "input";
    String textToFind="\\ue01d"; // unicode value

    List<WebElement> elements = Common.findElementsUsingHtmlXpathClass(driver, htmlElement, className);

    Common.myPrint(thisClass + " elements count: " + elements.size());
    for (WebElement element : elements) {
        String text = element.getAttribute("value");
        if (text != null) {
            if (text != "") {
                text = text.trim();
                if(text.contains(textToFind)) {
                    return Common.scrollIntoView(element, driver);
                }
            }
        }
    }
    return false;