7

1) findElements By xpath がどのように機能するかを示すチュートリアルを行っています。<div>attribute を持つ要素に続くすべてのテキストを返す理由を知りたいですid=container

xpath のコード:By.xpath("//div[@id='container']

2)コードを変更して、親ノートに続く最初または最初のいくつかのノード、たとえば「ホーム」などの最初のノード、ホーム、手動テスト、自動テストなどの最初のいくつかのノードを返すようにするにはどうすればよいですか。

アドバイスと助けをありがとう!

このチュートリアルのコード フラグメントは次のとおりです。

import java.util.List;

import org.junit.Test;
import org.junit.Before;
import org.junit.After;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class WD_findElements 
{
    @Test
    public void test_byxpath(){

        WebDriver driver = new FirefoxDriver();

        try{
            driver.get("http://www.hexbytes.com");

        List<WebElement> elements = driver.findElements(By.xpath("//div[@id='container']"));    
            System.out.println("Test7 number of elements: " + elements.size());

            for(WebElement ele : elements){
                //ele.sendKeys("hexbyes");
                System.out.println(ele.getText());
                //System.out.println(ele.getAttribute("id"));
                //System.out.println(ele.getTagName());
            } 
        }
        finally {
            driver.close();
        }

    }//end of test_byxpath

 public void xpathDemo2() {
           WebDriver driver = new FirefoxDriver();
           try{
               driver.get("http://www.hexbytes.com");
               WebElement webelement = driver.findElement(By.id("container"));
               //matching single element with attribute value=container
               System.out.println("The id value is: " + webelement.getAttribute("id"));
               System.out.println("The tag name is: " + webelement.getTagName());
           }
           finally {
               driver.close();
           }
       }//end of xpathDemo2 

public void xpathDemo3() {
       WebDriver driver = new FirefoxDriver();
       try{
           driver.get("http://www.hexbytes.com");
          //find first child node of div element with attribute=container
          List<WebElement> elements = driver.findElements(By.xpath("//div[@id='container']/*[1]"));
          System.out.println("Test1 number of elements: " + elements.size()); 

          for(WebElement ele : elements){
              System.out.println(ele.getTagName());
              System.out.println(ele.getAttribute("id"));
              System.out.println("");
              System.out.println("");
          }
   }
   finally {
       driver.close();
   }
 }//end of xpathDemo3
 }
4

3 に答える 3

3

XPath は次のようになります。

containerと等しいidを持つすべてのdiv要素を取得します。

最初の取得などに関しては、2 つのオプションがあります。

それをに変えてください.findElement()- これはとにかくあなたのために最初のものを返します。

また

これを XPath で明示的に行うには、次のようにします。

(//div[@id='container'])[1]

最初のもの、2番目など:

(//div[@id='container'])[2]

次に、XPath にはlastと呼ばれる特別なインデクサーがあり、 (ご想像のとおり)最後に見つかった要素を取得します。

(//div[@id='container'])[last()]

XPath インデクサーは、ほとんどのプログラミング言語のように0ではなく1から始まることに注意してください。

親の「ノード」の取得に関しては、 parentを使用できます。

//div[@id='container']/parent::*

それはdivの直接の親を取得します。

さらに進んで、ID がcontainerの最初の* div * が必要で、その親が必要だと言うことができます。

(//div[@id='container'])[1]/parent::*

それが役立つことを願っています!

于 2013-05-03T14:47:53.863 に答える
0

それ以外の

css=#container

使用する

css=div.container:nth-of-type(1),css=div.container:nth-of-type(2)
于 2014-04-03T08:24:50.243 に答える