如何在此 xpath c# selenium 中忽略区分大小写

How to ignore case sensitive in this xpath c# selenium

我有一个简单的 xpath:

driver.findelement(by.xpath("//li[contains(text(), 'chain')]").click() 

此代码有效,但无法识别大写的 chain,如何在此 xpath 中忽略区分大小写?

您可以像这样一起使用 containstranslate 函数:

//li[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'chain')]

使用 chain 的值,将其分配给单独的 string 变量,然后对其应用 .ToUpper() 扩展。

string strChain = "chain";
string getUpper = strChain.ToUpper();

它会给你大写的 cain

直接在driver.findelement里面使用即可。

使用翻译,但为了使其更短,您可以只翻译您要查找的字符

//li[contains(translate(text(), 'CHAIN', 'chain'), 'chain')]

如果您要经常使用它,您甚至可以为此编写一个方法。我会写在Java(抱歉,不熟悉C#):

public static void main(String[] args) {
    String l = "//li[" + containsTextIgnoringCase("Whosebug") + "]";
    System.out.println(l);
}

public static String containsTextIgnoringCase(String s) {
    return String.format("contains(translate(text(), '%s', '%s'), '%s')", s.toUpperCase(), s.toLowerCase(), s);
}

输出:

//li[contains(translate(text(), 'Whosebug', 'Whosebug'), 'Whosebug')]

有一些 space 优化(不确定是否需要付出努力,但仍然):仅翻译唯一字符,并处理引号,如果在字符串中传递