2017-11-30 7 views
0

私は、selneium-appium-javaモバイルWeb自動化フレームワークに取り組んでいます。HTMLタグとそれらの間のテキストをオブジェクトに格納する方法

ここ
@Given("^user checks text \"([^\"]*)\" in footer$") 
public void checkFooter(String footerText) { 
    footerComponent.checkNote(footerText); 
} 

は、それが現在FooterComponentクラス

内のノードの基本的なテキストを見つけるために設定されている方法です。私はいくつかのテキストを受け入れ、パラメータなどのように、さらにそれを渡すために正規表現を使用してキュウリのテストを持っています
private final String FOOTER = "//div[contains(@class, 'footer')]"; 

    public void checkNote(String expectedText) { 
    By note = By.xpath(FOOTER + "//div[@class='footer-footnote']"); 
    String actualText = getDriver().findElement(footerText).getText(); 
    assertEquals(actualText, expectedText, "Unexpected footer note"); 
} 

私はに対して期待される結果を検証する必要があるとDOMの例:

<div class='footer'> 
text1 
<span class="copysymbol"></span> 
text2 
<span class="dot"></span> 
text3 
<span class="dot"></span> 
text4 
<span class="dot"></span> 
</div> 

アイブ氏はここからパターンを使用してみましたが、IVEは成功していない: https://alvinalexander.com/blog/post/java/how-extract-html-tag-string-regex-pattern-matcher-group

基本的に私は、タグの存在(チェックする必要がある特殊文字を表す)とキュウリの線の中のテキストの存在をチェックするテキストを挿入してから、javaメソッドのチェックを行う必要があります実際のコードはXpathで検索します。これは、キュウリを介して正規表現を使用して行うことができる方法はありますか?

+1

私はHTMLをチェックするためにXPathを使用すると、正規表現を使用してはるかに望ましいことだと思います。だから多分あなたはここでxPathを使い続けることができます。 –

答えて

0

私はXPathが正規表現よりも最も適切であることに同意しなければならないので、私は答えとしてスタブを提供したいと思います。
さらに、ここにいる誰かが、あなたが望むすべてのことをする複雑な正規表現を与えても、あなたが管理することはできません。何を得ましたか?

次のパターンは、フッターdiv全体に一致します。あなたの説明には1つの例しか含まれておらず、バリエーションもないので、これ以上はできません。

<div class='footer'>.*?<span class="copysymbol"><\/span>.*?<span class="dot"><\/span>.*?<span class="dot"><\/span>.*?<span class="dot"><\/span>\s*<\/div>

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

final String regex = "<div class='footer'>.*?<span class=\"copysymbol\"><\\/span>.*?<span class=\"dot\"><\\/span>.*?<span class=\"dot\"><\\/span>.*?<span class=\"dot\"><\\/span>\\s*<\\/div>"; 
final String string = "<div class='footer'>\n" 
    + "text1\n" 
    + "<span class=\"copysymbol\"></span>\n" 
    + "text2\n" 
    + "<span class=\"dot\"></span>\n" 
    + "text3\n" 
    + "<span class=\"dot\"></span>\n" 
    + "text4\n" 
    + "<span class=\"dot\"></span>\n" 
    + "</div>"; 

final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); 
final Matcher matcher = pattern.matcher(string); 

while (matcher.find()) { 
    System.out.println("Full match: " + matcher.group(0)); 
    for (int i = 1; i <= matcher.groupCount(); i++) { 
     System.out.println("Group " + i + ": " + matcher.group(i)); 
    } 
} 
関連する問題