提问者:小点点

如何为div和span(最好是xpath)之间的文本编写定位器,其中包含非中断空间(&nbsp)


我想为以下div编写xpath:

<div class='someclass' id='someid'>:TEST&nbsp;SELENIUM&nbsp;1234<div>
    null
//div[contains(text(),":TEST SELENIUM 1234")]

//div[contains(text(),":TEST{&nbsp;}SELENIUM{&nbsp;}1234")] 

//div[contains(text(),":TEST&nbsp;SELENIUM&nbsp;1234")] 

//div[normalize-space(text()) = ':TEST SELENIUM 1234']

//div[normalize-space(text()) = ':TEST{&nbsp;}SELENIUM{&nbsp;}1234']

//div[normalize-space(text()) = ':TEST&nbsp;SELENIUM&nbsp;1234']

//div[normalize-space(.) = ':TEST SELENIUM 1234']  

//div[normalize-space(.) = ':TEST{&nbsp;}SELENIUM{&nbsp;}1234']  

//div[normalize-space(.) = ':TEST&nbsp;SELENIUM&nbsp;1234']  

//div[normalize-space(.) = ':TEST{\u00a0}SELENIUM{\u00a0}1234']  

//div[normalize-space(.) = ':TEST${nbsp}SELENIUM${nbsp}1234']  
//div[starts-with(text(), ":TEST") and substring(text(), 7)="SELENIUM" and  substring(text(), 16)="1234"]  

link1
Link2

如有任何帮助,我们将不胜感激。


共1个答案

匿名用户

根据上面的对话,您可以使用以下示例XPath构建器(JAVA):

public class Test {
    public static void main(String[] args) {
        String s = ":TEST&nbsp;SELENIUM&nbsp;1234";
        String[] parts = s.split("&nbsp;");
        StringBuilder xpath = new StringBuilder("//*");

        for (int i = 0; i < parts.length; i++){
            xpath.append((i == 0) ? "[contains(text(), '" + parts[i] + "')" : " and contains(text(), '" + parts[i] + "')");
        }
        xpath.append("]");

        System.out.println(xpath);
    }
}

产出:

//*[contains(text(), ':TEST') and contains(text(), 'SELENIUM') and contains(text(), '1234')]