Selenium How to find element inside element











up vote
0
down vote

favorite












Is it possible find element inside another element?
If we have html like this one






<div> 
<span>Some text 1 </span>
<p>Other text 1</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>





is it possible to do something like this



IList<IWebElement> elements=driver.FindElements(By.TagName("div"));
for (int i = 0; i < elements.Count; i++)
{
string text= elements[i].FindElement(By.TagName("span")).Text;
}


I have tried multiple times and in second iteration it is always finding me the the text from first element.










share|improve this question
























  • Which element / text exactly are you trying to find/locate? Did you notice the second and third <div> are identical? Does that matches your exact usecase?
    – DebanjanB
    Nov 19 at 18:31










  • So, what is the problem actually? Did you run the code?
    – Ratmir Asanov
    Nov 19 at 18:36















up vote
0
down vote

favorite












Is it possible find element inside another element?
If we have html like this one






<div> 
<span>Some text 1 </span>
<p>Other text 1</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>





is it possible to do something like this



IList<IWebElement> elements=driver.FindElements(By.TagName("div"));
for (int i = 0; i < elements.Count; i++)
{
string text= elements[i].FindElement(By.TagName("span")).Text;
}


I have tried multiple times and in second iteration it is always finding me the the text from first element.










share|improve this question
























  • Which element / text exactly are you trying to find/locate? Did you notice the second and third <div> are identical? Does that matches your exact usecase?
    – DebanjanB
    Nov 19 at 18:31










  • So, what is the problem actually? Did you run the code?
    – Ratmir Asanov
    Nov 19 at 18:36













up vote
0
down vote

favorite









up vote
0
down vote

favorite











Is it possible find element inside another element?
If we have html like this one






<div> 
<span>Some text 1 </span>
<p>Other text 1</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>





is it possible to do something like this



IList<IWebElement> elements=driver.FindElements(By.TagName("div"));
for (int i = 0; i < elements.Count; i++)
{
string text= elements[i].FindElement(By.TagName("span")).Text;
}


I have tried multiple times and in second iteration it is always finding me the the text from first element.










share|improve this question















Is it possible find element inside another element?
If we have html like this one






<div> 
<span>Some text 1 </span>
<p>Other text 1</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>





is it possible to do something like this



IList<IWebElement> elements=driver.FindElements(By.TagName("div"));
for (int i = 0; i < elements.Count; i++)
{
string text= elements[i].FindElement(By.TagName("span")).Text;
}


I have tried multiple times and in second iteration it is always finding me the the text from first element.






<div> 
<span>Some text 1 </span>
<p>Other text 1</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>





<div> 
<span>Some text 1 </span>
<p>Other text 1</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>
<div>
<span>Some text 2 </span>
<p>Other text 2</p>
</div>






c# selenium browser-automation






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 19 at 18:12









Brian

4,56672640




4,56672640










asked Nov 19 at 17:54









Polymorph

6




6












  • Which element / text exactly are you trying to find/locate? Did you notice the second and third <div> are identical? Does that matches your exact usecase?
    – DebanjanB
    Nov 19 at 18:31










  • So, what is the problem actually? Did you run the code?
    – Ratmir Asanov
    Nov 19 at 18:36


















  • Which element / text exactly are you trying to find/locate? Did you notice the second and third <div> are identical? Does that matches your exact usecase?
    – DebanjanB
    Nov 19 at 18:31










  • So, what is the problem actually? Did you run the code?
    – Ratmir Asanov
    Nov 19 at 18:36
















Which element / text exactly are you trying to find/locate? Did you notice the second and third <div> are identical? Does that matches your exact usecase?
– DebanjanB
Nov 19 at 18:31




Which element / text exactly are you trying to find/locate? Did you notice the second and third <div> are identical? Does that matches your exact usecase?
– DebanjanB
Nov 19 at 18:31












So, what is the problem actually? Did you run the code?
– Ratmir Asanov
Nov 19 at 18:36




So, what is the problem actually? Did you run the code?
– Ratmir Asanov
Nov 19 at 18:36












2 Answers
2






active

oldest

votes

















up vote
1
down vote













do you want to get p and span inside div ?



using Xpath() or CssSelector()



IList<IWebElement> div_childs = driver.FindElements(By.Xpath("//div/*"));
// or
//IList<IWebElement> div_childs = driver.FindElements(By.CssSelector("div *"));
foreach (var child in div_childs)
{
string text = child.Text;
string tag_name = child.TagName;
}





share|improve this answer




























    up vote
    0
    down vote













    Use a CSS selector and let it do the work for you...



    foreach (IWebElement element in Driver.FindElements(By.CssSelector("div > span")))
    {
    Console.WriteLine(element.Text);
    }


    This will find all SPANs that are children (>) of a DIV.






    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53380196%2fselenium-how-to-find-element-inside-element%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes








      up vote
      1
      down vote













      do you want to get p and span inside div ?



      using Xpath() or CssSelector()



      IList<IWebElement> div_childs = driver.FindElements(By.Xpath("//div/*"));
      // or
      //IList<IWebElement> div_childs = driver.FindElements(By.CssSelector("div *"));
      foreach (var child in div_childs)
      {
      string text = child.Text;
      string tag_name = child.TagName;
      }





      share|improve this answer

























        up vote
        1
        down vote













        do you want to get p and span inside div ?



        using Xpath() or CssSelector()



        IList<IWebElement> div_childs = driver.FindElements(By.Xpath("//div/*"));
        // or
        //IList<IWebElement> div_childs = driver.FindElements(By.CssSelector("div *"));
        foreach (var child in div_childs)
        {
        string text = child.Text;
        string tag_name = child.TagName;
        }





        share|improve this answer























          up vote
          1
          down vote










          up vote
          1
          down vote









          do you want to get p and span inside div ?



          using Xpath() or CssSelector()



          IList<IWebElement> div_childs = driver.FindElements(By.Xpath("//div/*"));
          // or
          //IList<IWebElement> div_childs = driver.FindElements(By.CssSelector("div *"));
          foreach (var child in div_childs)
          {
          string text = child.Text;
          string tag_name = child.TagName;
          }





          share|improve this answer












          do you want to get p and span inside div ?



          using Xpath() or CssSelector()



          IList<IWebElement> div_childs = driver.FindElements(By.Xpath("//div/*"));
          // or
          //IList<IWebElement> div_childs = driver.FindElements(By.CssSelector("div *"));
          foreach (var child in div_childs)
          {
          string text = child.Text;
          string tag_name = child.TagName;
          }






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 19 at 19:50









          ewwink

          6,76922233




          6,76922233
























              up vote
              0
              down vote













              Use a CSS selector and let it do the work for you...



              foreach (IWebElement element in Driver.FindElements(By.CssSelector("div > span")))
              {
              Console.WriteLine(element.Text);
              }


              This will find all SPANs that are children (>) of a DIV.






              share|improve this answer

























                up vote
                0
                down vote













                Use a CSS selector and let it do the work for you...



                foreach (IWebElement element in Driver.FindElements(By.CssSelector("div > span")))
                {
                Console.WriteLine(element.Text);
                }


                This will find all SPANs that are children (>) of a DIV.






                share|improve this answer























                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  Use a CSS selector and let it do the work for you...



                  foreach (IWebElement element in Driver.FindElements(By.CssSelector("div > span")))
                  {
                  Console.WriteLine(element.Text);
                  }


                  This will find all SPANs that are children (>) of a DIV.






                  share|improve this answer












                  Use a CSS selector and let it do the work for you...



                  foreach (IWebElement element in Driver.FindElements(By.CssSelector("div > span")))
                  {
                  Console.WriteLine(element.Text);
                  }


                  This will find all SPANs that are children (>) of a DIV.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 19 at 20:26









                  JeffC

                  11.8k41435




                  11.8k41435






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53380196%2fselenium-how-to-find-element-inside-element%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Tonle Sap (See)

                      I get strange results when I access the Sqlitedatabase with Unity C# via XAMPP

                      Guatemaltekische Davis-Cup-Mannschaft