Can anyone please tell me what's wrong with the code?
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd
import csv
import requests
from bs4 import BeautifulSoup
rows, cols = (1000,11)
rows = [[0 for i in range(cols)] for j in range(rows)]
driver_path = 'C:/Users/adith/Downloads/chromedriver_win32/chromedriver.exe'
brave_path = 'C:/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe'
option = webdriver.ChromeOptions()
option.binary_location = brave_path
browser = webdriver.Chrome(executable_path=driver_path, options=option)
browser.get('https://www.dell.com/community/Laptops/ct-p/Laptops')
cookies = {
'lithiumLogin:vjauj58549': '~2TtiW3OEsenvCn5Ir~fBcCal7YbmhAmxNWLe4LgaSRCss_g69Gqm2CAs-fDA_FtccFLDK3AoWuzXHz72fb'
}
def load():
count = 0
while True:
page = requests.get(browser.current_url)
soup = BeautifulSoup(page.content)
button = [z.text for z in soup.find_all(class_='lia-link-navigation')]
print(button[-1])
if(button[-1]=='Load more'):
count = count + 1
browser.find_element(By.XPATH, '//*[@id="btn-load-more"]').click()
if(count>12):
break
else:
break
try:
load()
except:
load()
It is able to click the load button 3 times but then I get an error as shown below.
Load more
Load more
Load more
Load more
Load more
Load more
---------------------------------------------------------------------------
ElementClickInterceptedException Traceback (most recent call last)
<ipython-input-6-ef6cae973b0d> in <module>
18 try:
---> 19 load()
20 except:
<ipython-input-6-ef6cae973b0d> in load()
11 count = count + 1
---> 12 browser.find_element(By.XPATH, '//*[@id="btn-load-more"]').click()
13 if(count>15):
~\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py in click(self)
87 """Clicks the element."""
---> 88 self._execute(Command.CLICK_ELEMENT)
89
~\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py in _execute(self, command, params)
395 params['id'] = self._id
--> 396 return self._parent.execute(command, params)
397
~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
434 if response:
--> 435 self.error_handler.check_response(response)
436 response['value'] = self._unwrap_value(
~\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
246 raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
--> 247 raise exception_class(message, screen, stacktrace)
248
ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (470, 1629)
(Session info: chrome=103.0.5060.114)
Can someone please explain what's wrong with the code? Also, can anyone help me out to eliminate the use of BeautifulSoup library completely to get the required solution?