I have made it big progress but there is last minor problem left.
with the code above want to append all the tables in the pages but it append only the first page repetitively.
df = pd.read_html(driver.page_source)
next_page_btn = driver.find_elements_by_xpath('//*[@id=&...
Your xpath would be //h2/text(). See the test here.
P.S. - I have no idea why you need that xpath (since you're not mentioning that in your question) but as a side note: you will not be able to use this xpath with Selenium since Selenium cannot wrap a text node into a WebElement
If you need that for Selenium, use the following approach: