Navigating a non-scrollable table in Airtable using Selenium: Any solutions?

I'm trying to extract all the data from a table on an Airtable page. The problem is I can't scroll the table. I've tried using JavaScript in the console but it didn't work.

Here's what I've attempted so far:

1. Used Selenium to find the table element and send PAGE_DOWN key
2. Tried ActionChains to move to the element
3. Attempted to use JavaScript to scroll the table
4. Experimented with finding the scroll bar and dragging it

None of these methods have been successful. The table seems to be in a container that doesn't allow normal scrolling.

Has anyone faced a similar issue or know how to scroll such a table? I'm using Python with Selenium WebDriver.

Any help or suggestions would be much appreciated!

I feel your pain, Alex_Brave. I’ve been in a similar boat with Airtable’s tricky tables. What worked for me was a combination of JavaScript execution and patience. Instead of trying to scroll the table directly, I focused on manipulating the table’s container element.

Here’s a snippet that might help:

driver.execute_script("""
    var container = document.querySelector('.tableViewVirtualContainer');
    container.scrollTo(0, container.scrollHeight);
""")
time.sleep(2)  # Give it time to load new rows

This approach forces the container to scroll to the bottom, triggering new row loads. You might need to repeat this in a loop, grabbing data after each scroll until you hit the end.

Also, don’t forget to check for any ‘Load More’ buttons that might appear. Sometimes Airtable hides those sneaky little things at the bottom of long tables.

Hope this helps! Let me know if you need more details.

I’ve encountered a similar challenge with Airtable where the table uses a virtualized rendering approach that only loads the rows currently in view. In my experience, a successful workaround has been to use Selenium’s execute_script to adjust the scrollTop property of the table container. This approach simulates scrolling by updating the internal state of the table, allowing additional rows to load before extracting the visible data. It often requires fine-tuning the scroll increments and wait times to ensure that all rows are eventually captured, but it has proven effective in practice.