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"))場合にのみ true を返しますoneoff = "Jeff"

于 2013-02-14T03:32:51.410 に答える
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 に答える
1

提供したコードに match() を使用する必要はありません。代わりに、文字列の一致に oneoff.equals("String") を使用してください。Match() は、より正規表現用です。文字列がターゲット文字列のサブセットとしてのみ存在する場合でも true を返したい場合は、oneoff.contains("String") を使用することもできます。

于 2013-02-14T03:32:41.010 に答える