0

以下に示すようなマークアップがある場合、親 div から 8 番目の div のそれぞれに個別にアクセスし、for ループを使用してその ID を出力したいと考えています。

<div class=abc>
  <div id="parent">
    <div id="one">
       <div id=........</div>
       <div id=........</div>
    <div id="two">
       <div id=........</div>
       <div id=........</div>
    <div id="three">
       <div id=........</div>
       <div id=........</div>
    <div id="four">
       <div id=........</div>
       <div id=........</div>
    <div id="five">
       <div id=........</div>
       <div id=........</div>
    <div id="six">
       <div id=........</div>
       <div id=........</div>
    <div id="seven">
       <div id=........</div>
       <div id=........</div>
    <div id="eight">
       <div id=........</div>
       <div id=........</div>
  </div>
</div>

しかし、私が(Javaで)印刷している間、8つのdivのそれぞれの下にあるすべてのdiv idも印刷されています.1つのforループで各8つのdivのidのみを取得するにはどうすればよいですか? Selenium Web Driver を使用して Web サイトを自動化しています。私はこのように試しました:

List<WebElement> eightdivs = driver.findElements(By.cssSelector("#abc div:nth-child(n)"));
     for(WebElement eachdiv : eightdivs)
      {
         System.out.println(eachdiv.getAttribute("id"));
      }
4

1 に答える 1

1

セレクター:

#abc div:nth-child(n)

div内で、親の n 番目の子であるすべての要素を選択します#abc。スペースは子孫セレクターです。つまり、親はその#abc中のいずれかである可能性があります。これは、すべての s が親の n 番目の子であるため、すべてを選択する必要があることを意味しますdiv(ただし、親要素は.abcor#parentであり、 ではない#abcため、使用したセレクターは実際には何も返しません)。

に変更#abcし、 の直下#parentの子に子セレクターを使用し、冗長であるため、その部分を削除する必要があります。>#parent:nth-child(n)

List<WebElement> eightdivs = driver.findElements(By.cssSelector("#parent > div"));

for (WebElement eachdiv : eightdivs)
{
    System.out.println(eachdiv.getAttribute("id"));
}
于 2013-02-12T06:45:27.210 に答える