2

Web ページの特定のスロットが読み込まれているかどうかを確認する必要があります。main()そのために関数でSelenium WebDriverを使用しています (JUnit テスト ケースを使用する必要がありますか?)。

<div>特定の ID を持つテキスト間のテキストを取得する方法は何ですか?

このページが与えられた場合:

<div id="center-2" class="promo">
    <div class="unified_widget rcmBody">
        <span class="logo"><img src="someimage.gif" /></span>
        <span class="headline">Make money by Selling items on Amazon</span>
        <span class="link"><a href="/content/sell-on-amazon.htm">Selling On Amazon</a></span>
        <span class="body">Sell your items on Amazon.com. Amazon can help you grow your business and reach more customers.</span>
        <div class="h_rule"></div>
    </div>
</div>

<div id = center-2>与えられたら、抽出する必要があります

「Amazon で商品を販売して収益を得る」、
「Amazon で販売する」、
「Amazon.com で商品を販売する。Amazon は、ビジネスの成長とより多くの顧客へのリーチを支援します。」

どの方法を使用すればよいですか?

4

1 に答える 1

1

要素が確実にロードされるようにするには、Implicit および Explicit 待機を使用します。

通常、要素と対話する必要がある場合は、暗黙の待機で十分です。設定すると、すべての要素の検索に使用されます。私の経験では、95% のケースで十分です。

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

より高度な待機が必要な場合 (または待機を 1 回だけ使用する場合) には、明示的な待機が用意されています。


id私が知っている特定の要素を取得するために通常使用される3つの方法があります。

  1. 好ましい方法:

    driver.findElement(By.id("elemId"));
    
  2. 要素から始めて、その子孫を検索する必要がある場合の良い方法:

    driver.findElement(By.cssSelector("#elemId"));
    driver.findElement(By.xpath("id('elemId')"));
    
  3. XPath に慣れているため、多くの人が使用する方法:

    driver.findElement(By.xpath("//*[@id='elemId']"));
    

CSS セレクターXPathの詳細については、Web 上のチュートリアルを参照してください。


テキストについて:

String text = driver.findElement(By.id("center-2")).getText();
System.out.println(text);

出力

Amazon で商品を販売して収益を得る Amazon で商品を販売する Amazon.com で商品を販売します。Amazon は、ビジネスの成長とより多くの顧客へのリーチを支援します。

3 つのものを個別に取得する場合は、次のように使用します。

String headline = driver.findElement(By.cssSelector("#center-2 .headline")).getText();
System.out.println(headline);

String link = driver.findElement(By.cssSelector("#center-2 .link")).getText();
System.out.println(link);

String body = driver.findElement(By.cssSelector("#center-2 .body")).getText();
System.out.println(body);
于 2012-07-18T14:05:45.023 に答える