Skip to content Skip to sidebar Skip to footer

Python And Selenium To “execute_script” To Solve “elementnotvisibleexception”

I am using Selenium to save a webpage. The content of webpage will change once certain checkbox(s) are clicked. What I want is to click a checkbox then save the page content. (The

Solution 1:

Alternative option would be to make the click() inside execute_script():

# wait for element to become present
wait = WebDriverWait(driver, 10)
checkbox = wait.until(EC.presence_of_element_located((By.NAME, "keywords_here")))

driver.execute_script("arguments[0].click();", checkbox)

where EC is imported as:

from selenium.webdriver.supportimport expected_conditions asEC

Alternatively and as an another shot in the dark, you can use the element_to_be_clickable Expected Condition and perform the click in a usual way:

wait = WebDriverWait(driver, 10)
checkbox = wait.until(EC.element_to_be_clickable((By.NAME, "keywords_here")))

checkbox.click()

Solution 2:

I had some issues with expected conditions, I prefer building my own timeout.

import time
from selenium import webdriver
from selenium.common.exceptions import \
    NoSuchElementException, \
    WebDriverException
from selenium.webdriver.common.by import By

b = webdriver.Firefox()
url = 'the url'
b.get(url)
locator_type = By.XPATH
locator = "//label[contains(text(),' keywords_here')]/../input[@type='checkbox']"
timeout = 10
success = False
wait_until = time.time() + timeout
while wait_until < time.time():
    try:
        element = b.find_element(locator_type, locator)
        assert element.is_displayed()
        assert element.is_enabled()
        element.click() # or if you really want to use an execute script for it, you can do that here.
        success = Truebreakexcept (NoSuchElementException, AssertionError, WebDriverException):
        passifnot success:
    error_message = 'Failed to click the thing!'print(error_message)

might want to add InvalidElementStateException, and StaleElementReferenceException

Post a Comment for "Python And Selenium To “execute_script” To Solve “elementnotvisibleexception”"