title: How to get pre formatted text preserving newlines using selenium Python?
body: <p>I want to grab all the text inside a <code>pre</code> tag using Selenium Chrome driver in Python.
  Let's consider this Hacker Earth Submission <a href="https://www.hackerearth.com/submission/key/3b75fc6f8009460fb4e2f0db3c2cf58c/" rel="nofollow noreferrer">link</a>.</p>
  
  <p>Whenever I try to get the text <code>driver.find_element_by_tag_name('pre').text</code> , It removes the newlines. How do I grab the text preserving all the newlines?</p>
  
  <p>I am getting the following output</p>
  
  <pre><code>#include &lt;bits/stdc++.h&gt;
   #ifndef ONLINE_JUDGE
      #define gc getchar
      #define pc putchar
  #else
      #define gc getchar_unlocked
      #define pc putchar_unlocked
  #endif
   using namespace std;
   #define vi vector&lt;int&gt;
  #define si set&lt;int&gt;
  #define vs vector&lt;string&gt;
  #define pii pair&lt;int,int&gt;
  #define vpi vector&lt;pii&gt;
  #define pri priority_queue&lt;int&gt;
  #define rev_pri priority_queue&lt;int,vector&lt;int&gt;,greater&lt;int&gt; &gt;
  #define mpi map&lt;int,int&gt;
  #define i64 long long int
  #define endl '\n'
  #define pi acos(-1)
  #define all(v) v.begin(),v.end()
  #define pb push_back
  #define mp make_pair
  #define mod 1000000007
  #define inf INT_MAX/2
  #define infll LLONG_MAX/3
  #define For(i,n) for(int i=0;i&lt;n;i++)
  #define Fre(i,a,b) for(int i = a; i &lt; b; i++)
  #define sf(n) scanf("%d", &amp;n)
  #define sff(a,b) scanf("%d %d", &amp;a, &amp;b)
  #define sfff(a,b,c) scanf("%d %d %d", &amp;a, &amp;b, &amp;c)
  #define pfn(n) printf("%d\n", n)
  #define pfs(n) printf("%d ", n)
  #define eps 1e-8
  #define ff first
  #define ss second
  #define mem(a,b) memset(a,b,sizeof(a))
  #define READ freopen("in.txt", "r", stdin)
  #define WRITE freopen("out.txt", "w", stdout)
  #define sz size()
  #define dbg(i) printf("yo %d\n", i)
  #define foreach(i,c) for(__typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
  #define sqr(a) (a) * (a)
  #define clr clear()
  #define CASE(a) printf("Case %d: ",a)
   //int dx[] = {0,1,0,-1,1,1,-1,-1};
  //int dy[] = {1,0,-1,0,1,-1,-1,1};
    //i64 gcd(i64 a,i64 b){if(!b)return a;return gcd(b,a%b);}
   //inline void fastRead(int *a){register char c=0;while(c&lt;33)c=gc();*a=0;while(c&gt;33){*a=*a*10+c-'0';c=gc();}}
   //inline void fastWrite(int a){char snum[20];int i=0;do{snum[i++]=a%10+48;a=a/10;}while(a!=0);i=i-1;while(i&gt;=0)pc(snum[i--]);pc('\n');}
   //i64 bigmod(i64 num,i64 n){if(n==0)return 1;i64 x=bigmod(num,n/2);x=x*x%mod;if(n%2==1)x=x*num%mod;return x;}
   //i64 modinverse(i64 num){return bigmod(num,mod-2)%mod;}
   //i64 po(i64 a,i64 b){i64 ans=1;while(b--)ans *= a;return ans;}
   //i64 ncr(i64 n,i64 r){if(n==r)return 1;if(r==1)return n;if(dp[n][r]!=-1)return dp[n][r];return dp[n][r]=ncr(n-1,r)+ncr(n-1,r-1);}
    // bit manipulations
   //bool checkbit(int mask,int bit){return mask &amp; (1&lt;&lt;bit);}
   //int setbit(int mask,int bit){ return mask  (1&lt;&lt;bit) ; }
   //int clearbit(int mask,int bit){return mask &amp; ~(1&lt;&lt;bit);}
   //int togglebit(int mask,int bit){return mask ^ (1&lt;&lt;bit);}
     int main()
  {
           i64 t,n,k;
          cin &gt;&gt; t;
          while(t--) {
                  cin &gt;&gt; n &gt;&gt; k;
                  i64 ans = 0;
                  while(n &gt;= k) {
                          ans += n/k;
                          n = n / k + n % k;
                  }
                   cout &lt;&lt; ans &lt;&lt; endl;
          }
                      return 0;
  }
  </code></pre>
  
  <p>But I want the following output</p>
  
  <pre><code>#include &lt;bits/stdc++.h&gt;
  
  #ifndef ONLINE_JUDGE
      #define gc getchar
      #define pc putchar
  #else
      #define gc getchar_unlocked
      #define pc putchar_unlocked
  #endif
  
  using namespace std;
  
  #define vi vector&lt;int&gt;
  #define si set&lt;int&gt;
  #define vs vector&lt;string&gt;
  #define pii pair&lt;int,int&gt;
  #define vpi vector&lt;pii&gt;
  #define pri priority_queue&lt;int&gt;
  #define rev_pri priority_queue&lt;int,vector&lt;int&gt;,greater&lt;int&gt; &gt;
  #define mpi map&lt;int,int&gt;
  #define i64 long long int
  #define endl '\n'
  #define pi acos(-1)
  #define all(v) v.begin(),v.end()
  #define pb push_back
  #define mp make_pair
  #define mod 1000000007
  #define inf INT_MAX/2
  #define infll LLONG_MAX/3
  #define For(i,n) for(int i=0;i&lt;n;i++)
  #define Fre(i,a,b) for(int i = a; i &lt; b; i++)
  #define sf(n) scanf("%d", &amp;n)
  #define sff(a,b) scanf("%d %d", &amp;a, &amp;b)
  #define sfff(a,b,c) scanf("%d %d %d", &amp;a, &amp;b, &amp;c)
  #define pfn(n) printf("%d\n", n)
  #define pfs(n) printf("%d ", n)
  #define eps 1e-8
  #define ff first
  #define ss second
  #define mem(a,b) memset(a,b,sizeof(a))
  #define READ freopen("in.txt", "r", stdin)
  #define WRITE freopen("out.txt", "w", stdout)
  #define sz size()
  #define dbg(i) printf("yo %d\n", i)
  #define foreach(i,c) for(__typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
  #define sqr(a) (a) * (a)
  #define clr clear()
  #define CASE(a) printf("Case %d: ",a)
  
  //int dx[] = {0,1,0,-1,1,1,-1,-1};
  //int dy[] = {1,0,-1,0,1,-1,-1,1};
  
  
  //i64 gcd(i64 a,i64 b){if(!b)return a;return gcd(b,a%b);}
  
  //inline void fastRead(int *a){register char c=0;while(c&lt;33)c=gc();*a=0;while(c&gt;33){*a=*a*10+c-'0';c=gc();}}
  
  //inline void fastWrite(int a){char snum[20];int i=0;do{snum[i++]=a%10+48;a=a/10;}while(a!=0);i=i-1;while(i&gt;=0)pc(snum[i--]);pc('\n');}
  
  //i64 bigmod(i64 num,i64 n){if(n==0)return 1;i64 x=bigmod(num,n/2);x=x*x%mod;if(n%2==1)x=x*num%mod;return x;}
  
  //i64 modinverse(i64 num){return bigmod(num,mod-2)%mod;}
  
  //i64 po(i64 a,i64 b){i64 ans=1;while(b--)ans *= a;return ans;}
  
  //i64 ncr(i64 n,i64 r){if(n==r)return 1;if(r==1)return n;if(dp[n][r]!=-1)return dp[n][r];return dp[n][r]=ncr(n-1,r)+ncr(n-1,r-1);}
  
  
  // bit manipulations
  
  //bool checkbit(int mask,int bit){return mask &amp; (1&lt;&lt;bit);}
  
  //int setbit(int mask,int bit){ return mask  (1&lt;&lt;bit) ; }
  
  //int clearbit(int mask,int bit){return mask &amp; ~(1&lt;&lt;bit);}
  
  //int togglebit(int mask,int bit){return mask ^ (1&lt;&lt;bit);}
  
  
  
  int main()
  {
  
          i64 t,n,k;
          cin &gt;&gt; t;
          while(t--) {
                  cin &gt;&gt; n &gt;&gt; k;
                  i64 ans = 0;
                  while(n &gt;= k) {
                          ans += n/k;
                          n = n / k + n % k;
                  }
  
                  cout &lt;&lt; ans &lt;&lt; endl;
          }
  
  
  
  
  
  
  
  
  
  
  
  
          return 0;
  }
  </code></pre>