0

我已经进入 Selenium WebDriver,但仍然发现最令人困惑的例子。

我需要能够读取一个字符串(成功)运行一个询问是否存在特定文本的条件。

为了这篇文章。

String oneoff = "Jeff is old"

我需要在 Jeff 上进行匹配,见下面的代码,只要 Jeff 存在于字符串中,我想返回 true。如果 Jeff 不存在,那么我会检查 50-75 个其他名字。但是,字符串可能包含它们的名称和无法控制的附加文本。所以我必须进行部分匹配。

问题 1. 我是不是搞砸了,必须以我所看到的那种疯狂的格式构建每个正则表达式,还是我遗漏了一些明显的东西?

问题 2. 是否有人为我的理智请告诉我匹配 Jeff 的正确方法,文本可能出现在 Jeff 的名字之前和之后。

谢谢!

String oneoff = driver.findElement(By.id("id_one_off_byline"))
        .getAttribute("value");
System.out.println("One Off is:" + oneoff);
if (oneoff.matches("Jeff")) {
    System.out.println("It is Jeff");
} else {
    System.out.println("it is not jeff");
}

这只是代码的功能部分,

4

3 回答 3

4

由于 Jeff 存在于字符串中,我想返回 true

那么你可能应该用

if (oneoff.contains("Jeff")) 

因为matches使用正则表达式作为参数,所以if (oneoff.matches("Jeff"))只有在oneoff = "Jeff".

于 2013-02-14T03:32:51.410 回答
1

对于您提供的代码,您不需要使用 match()。而是使用 oneoff.equals("String") 进行字符串匹配。Match() 更适用于正则表达式。即使字符串仅作为目标字符串的子集存在,如果要返回 true,也可以使用 oneoff.contains("String")。

于 2013-02-14T03:32:41.010 回答
1
if (oneoff.contains("Jeff")) {
    System.out.println("It is Jeff");
} else if (!oneoff.contains("Jeff")) {
    System.out.println("it is not jeff");
}

我认为您应该将代码改进为这样,因为如果包含其他“jeff”可能是“JEef”或“JEEF”甚至可能是“Jeef”,java 可能无法识别 else 字符串

我希望它有效,我曾经发现过和你一样的错误,我尝试用这种方法来克服它。

于 2013-02-14T03:41:21.507 回答