My selenium webdriver been constantly crashing due to
TimeoutException: Message: timeout: Timed out receiving message from renderer: 298.972
The cookies pop up opens up but the script doesn't click on it,
in like 20 driver.get(url)
, 19 times it will accept cookies but the 20th will fail to accept cookies, although the window has opened up, I tried to use the code below but still fails.
retries = 1
while retries <= 5:
try:
element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@class="coi-banner__accept"]'))) #wait until cookies clickable
element.click()
break
except TimeoutException:
driver.refresh()
element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@class="coi-banner__accept"]'))) #wait until cookies clickable
element.click()
retries += 1
I ran the below script more than 20 times and still it was able to click on the desired button every single time.
All I had to do was basically to change the locator to CSS from XPath:
driver = webdriver.Chrome(driver_path)
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("https://www.novasol.com/")
try:
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[onclick='CookieInformation.submitAllCategories();']"))).click()
print('Clicked it')
except:
print('Either element was not found, or Bot could not click on it.')
pass
Imports:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Updated:
driver.get("https://www.novasol.com/")
def retry_click(number_of_retries, wait_before_performing_click):
while number_of_retries > 0:
time.sleep(wait_before_performing_click)
try:
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[onclick='CookieInformation.submitAllCategories();']"))).click()
break
except:
pass
number_of_retries = number_of_retries - 1
try:
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[onclick='CookieInformation.submitAllCategories();']"))).click()
print('Clicked it')
except:
print('Either element was not found, or Bot could not click on it.')
driver.refresh()
retry_click(20, 10)
pass