Selenium загружает таблицу (происходит довольно быстро), а затем предполагает, что это сделано, поскольку у нее никогда не было возможности загрузить строки таблицы (происходит медленнее). Одним из способов решения этой проблемы является повторная попытка найти элемент, который не появится до тех пор, пока таблица не закончит загрузку.
Это FAR из наиболее элегантного решения (и, вероятно, библиотеки Selenium делают это лучше),но вы можете подождать таблицы, проверив, можно ли найти новую строку таблицы, и, если нет, поспите 1 секунду, прежде чем пытаться снова.
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
driver = webdriver.Chrome()
driver.get('http://www.panamacompra.gob.pa/Inicio/#!/busquedaAvanzada?BusquedaRubros=true&IdRubro=41')
wvar = 0
while(wvar == 0):
try:
#try loading one of the elements we want to read
el = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[2]/div/div/div[2]/div[2]/div[3]/table/tbody/tr[3]')
wvar = 1
except NoSuchElementException:
#not loaded yet
print('table body empty, waiting...')
time.sleep(1)
print('table loaded!')
#element got loaded; reload the table
table = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[2]/div/div/div[2]/div[2]/div[3]/table/tbody')
print(table.text)