below is my aparser code. it return `ERROR:root:Error: 'Page' object has no attribute 'querySelectorAll'` error. pls check it:

import asyncio
import random
import time
import logging
import backoff
from playwright.async_api import async_playwright
from ratelimit import limits, sleep_and_retry

# Configure logging
logging.basicConfig(level=logging.INFO)

# username, password, and proxy_servers list is before this script

def get_next_proxy():
    for proxy in proxy_servers:
        yield {
            'server': f'http://{proxy["ip"]}:{proxy["port"]}',
            'username': proxy['username'],
            'password': proxy['password'],
        }

# Proxy generator function (as defined above)
proxy_generator = get_next_proxy()

# List of user agents (as defined above)
user_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
    
    # Windows User Agents
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Edg/91.0.864.67',

    # macOS User Agents
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:93.0) Gecko/20100101 Firefox/93.0',

    # Linux User Agents
    'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0',
    'Mozilla/5.0 (X11; Ubuntu; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',

    # Mobile User Agents
    'Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1',
    'Mozilla/5.0 (Linux; Android 10; SM-G973F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Mobile Safari/537.36',
    'Mozilla/5.0 (Windows Phone 10.0; Android 10; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Mobile Safari/537.36',

    # Tablet User Agents
    'Mozilla/5.0 (iPad; CPU OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1',
    'Mozilla/5.0 (Linux; Android 9; Samsung Galaxy Tab S4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',

    # Other Browsers
    'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; AS; Tablet; Touch; rv:11.0) like Gecko',
    'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0',
    'Mozilla/5.0 (Linux; Android 9; HUAWEI P20 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Mobile Safari/537.36'
]

@sleep_and_retry
@limits(calls=5, period=60)
async def call_with_rate_limit_async(func, *args, **kwargs):
    return await func(*args, **kwargs)

async def perform_stealth(page):
    # Simulate random mouse movements
    for _ in range(random.randint(3, 7)):
        x, y = random.randint(0, 1920), random.randint(0, 1080)
        await page.mouse.move(x, y, steps=random.randint(5, 20))
        await asyncio.sleep(random.uniform(0.1, 0.5))
    
    # Simulate clicks on random elements
    elements = await page.querySelectorAll('a')
    if elements:
        random_element = random.choice(elements)
        await random_element.click()
        await asyncio.sleep(random.uniform(1, 3))
    
    # Simulate scrolling
    await page.evaluate("window.scrollBy(0, window.innerHeight);")
    await asyncio.sleep(random.uniform(1, 3))

@backoff.on_exception(backoff.expo, Exception, max_tries=5)
async def navigate_to_url(page, url):
    await page.goto(url, timeout=60000)

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        for _ in range(5):
            try:
                proxy = next(proxy_generator)
                user_agent = random.choice(user_agents)
                
                context = await browser.new_context(
                    proxy=proxy,
                    user_agent=user_agent,
                    viewport={"width": 1366, "height": 768},
                    locale="en-US",
                    timezone_id="America/New_York",
                    permissions=["geolocation"],
                    geolocation={"latitude": 40.7128, "longitude": -74.0060}
                )
                
                # Request interception
                await context.set_extra_http_headers({
                    'Accept-Encoding': 'gzip, deflate, br',
                    'Connection': 'keep-alive',
                    'Cache-Control': 'no-cache',
                    'Upgrade-Insecure-Requests': '1',
                    'DNT': '1',
                    'Accept-Language': 'en-US,en;q=0.9'
                })
                
                # Add init script for navigator spoofing
                await context.add_init_script("""
                    // JavaScript for navigator spoofing
                    Object.defineProperty(navigator, 'webdriver', { value: undefined });
                    Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3] });
                    Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] });
                    Object.defineProperty(navigator, 'platform', { get: () => 'Win32' });
                    Object.defineProperty(navigator, 'vendor', { get: () => 'Google Inc.' });
                    Object.defineProperty(navigator, 'javaEnabled', { value: () => false });
                """)
                
                # Open a new page
                page = await context.new_page()
                
                # Enable request interception
                await page.route('**', lambda route: route.continue_())
                
                # Perform stealth tweaks
                await perform_stealth(page)
                
                query = 'sadness'
                url_scholar = f'https://scholar.google.com/scholar?q={query}&hl=en&gl=us&start=0'
                
                logging.info(f"Using proxy: {proxy['server']}, user-agent: {user_agent}")
                
                # Navigate to the URL with retry logic
                response = await navigate_to_url(page, url_scholar)
                if response.status != 200:
                    logging.error(f"Non-200 response: {response.status}")
                    raise Exception("response error")
                
                # Scrape content
                html = await page.content()
                logging.info(html[:500])
                
                await context.close()
                time.sleep(random.randint(5, 15))
            
            except Exception as e:
                logging.error(f"Error: {e}, retrying...")
                continue
        
        await browser.close()

asyncio.run(main())