TypeError: 'WebElement' object is not iterable error












9














I am trying to extract all the links from wikipedia homepage but this code showing TypeError: 'WebElement' object is not iterable error.



import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser=webdriver.Chrome()
browser.get('https://en.wikipedia.org/wiki/Main_Page')
search=
search=browser.find_element_by_xpath('//*[@href]')


for ii in search:
print(ii.get_attribute('href'))

time.sleep(4)
browser.close()









share|improve this question





























    9














    I am trying to extract all the links from wikipedia homepage but this code showing TypeError: 'WebElement' object is not iterable error.



    import time
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys

    browser=webdriver.Chrome()
    browser.get('https://en.wikipedia.org/wiki/Main_Page')
    search=
    search=browser.find_element_by_xpath('//*[@href]')


    for ii in search:
    print(ii.get_attribute('href'))

    time.sleep(4)
    browser.close()









    share|improve this question



























      9












      9








      9


      1





      I am trying to extract all the links from wikipedia homepage but this code showing TypeError: 'WebElement' object is not iterable error.



      import time
      from selenium import webdriver
      from selenium.webdriver.common.keys import Keys

      browser=webdriver.Chrome()
      browser.get('https://en.wikipedia.org/wiki/Main_Page')
      search=
      search=browser.find_element_by_xpath('//*[@href]')


      for ii in search:
      print(ii.get_attribute('href'))

      time.sleep(4)
      browser.close()









      share|improve this question















      I am trying to extract all the links from wikipedia homepage but this code showing TypeError: 'WebElement' object is not iterable error.



      import time
      from selenium import webdriver
      from selenium.webdriver.common.keys import Keys

      browser=webdriver.Chrome()
      browser.get('https://en.wikipedia.org/wiki/Main_Page')
      search=
      search=browser.find_element_by_xpath('//*[@href]')


      for ii in search:
      print(ii.get_attribute('href'))

      time.sleep(4)
      browser.close()






      python selenium-chromedriver






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 13 '17 at 21:19









      pr0gramist

      2,88511124




      2,88511124










      asked Sep 15 '16 at 21:10









      priyanshu goyal

      64116




      64116
























          2 Answers
          2






          active

          oldest

          votes


















          32














          The problem is that you are using find_element_by_xpath which return only one WebElement (which is not iterable), the find_elements_by_xpath return a list of WebElements.



          Solution: replace find_element_by_xpath with find_elements_by_xpath



          Reference: selenium-python docs






          share|improve this answer































            1














            Below code worked for me.



            from selenium import webdriver
            driver=webdriver.Firefox()
            driver.get("https://www.google.co.in/")
            list_links=driver.find_elements_by_tag_name('a')

            for i in list_links:
            print i.get_attribute('href')





            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',
              autoActivateHeartbeat: false,
              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%2f39520426%2ftypeerror-webelement-object-is-not-iterable-error%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









              32














              The problem is that you are using find_element_by_xpath which return only one WebElement (which is not iterable), the find_elements_by_xpath return a list of WebElements.



              Solution: replace find_element_by_xpath with find_elements_by_xpath



              Reference: selenium-python docs






              share|improve this answer




























                32














                The problem is that you are using find_element_by_xpath which return only one WebElement (which is not iterable), the find_elements_by_xpath return a list of WebElements.



                Solution: replace find_element_by_xpath with find_elements_by_xpath



                Reference: selenium-python docs






                share|improve this answer


























                  32












                  32








                  32






                  The problem is that you are using find_element_by_xpath which return only one WebElement (which is not iterable), the find_elements_by_xpath return a list of WebElements.



                  Solution: replace find_element_by_xpath with find_elements_by_xpath



                  Reference: selenium-python docs






                  share|improve this answer














                  The problem is that you are using find_element_by_xpath which return only one WebElement (which is not iterable), the find_elements_by_xpath return a list of WebElements.



                  Solution: replace find_element_by_xpath with find_elements_by_xpath



                  Reference: selenium-python docs







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Sep 15 '16 at 22:02

























                  answered Sep 15 '16 at 21:51









                  pr0gramist

                  2,88511124




                  2,88511124

























                      1














                      Below code worked for me.



                      from selenium import webdriver
                      driver=webdriver.Firefox()
                      driver.get("https://www.google.co.in/")
                      list_links=driver.find_elements_by_tag_name('a')

                      for i in list_links:
                      print i.get_attribute('href')





                      share|improve this answer


























                        1














                        Below code worked for me.



                        from selenium import webdriver
                        driver=webdriver.Firefox()
                        driver.get("https://www.google.co.in/")
                        list_links=driver.find_elements_by_tag_name('a')

                        for i in list_links:
                        print i.get_attribute('href')





                        share|improve this answer
























                          1












                          1








                          1






                          Below code worked for me.



                          from selenium import webdriver
                          driver=webdriver.Firefox()
                          driver.get("https://www.google.co.in/")
                          list_links=driver.find_elements_by_tag_name('a')

                          for i in list_links:
                          print i.get_attribute('href')





                          share|improve this answer












                          Below code worked for me.



                          from selenium import webdriver
                          driver=webdriver.Firefox()
                          driver.get("https://www.google.co.in/")
                          list_links=driver.find_elements_by_tag_name('a')

                          for i in list_links:
                          print i.get_attribute('href')






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Mar 4 '17 at 17:19









                          Hari

                          111




                          111






























                              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%2f39520426%2ftypeerror-webelement-object-is-not-iterable-error%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

                              What visual should I use to simply compare current year value vs last year in Power BI desktop

                              How to ignore python UserWarning in pytest?

                              Alexandru Averescu