ElementNotInteractableException: Message: Element could not be scrolled into view while trying to click an element using Selenium and Python

前端 未结 3 842
無奈伤痛
無奈伤痛 2021-01-25 00:06

I have this code:

driver.switch_to.window(window_after)

try:
    myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.NAME, \'_eventId         


        
相关标签:
3条回答
  • 2021-01-25 00:14

    This problem usually arises when the element you are trying to click is present on the page but it is not fully visible and the point where selenium tries to click is not visible.
    In this case, you can use javascript to click on the element, which actually operates directly on the html structure of the page.
    You can use it like:

    element = driver.find_element_by_name("_eventId_confirmed")
    driver.execute_script("arguments[0].click();", element)
    
    0 讨论(0)
  • 2021-01-25 00:19

    Here are the 2 options.

    Using selenium location_once_scrolled_into_view method:

    btn.location_once_scrolled_into_view
    

    Using Javascript:

    driver.execute_script("arguments[0].scrollIntoView();",btn)
    

    Sample Code:

    url = "https://stackoverflow.com/questions/55228646/python-selenium-cant-sometimes-scroll-element-into-view/55228932?    noredirect=1#comment97192621_55228932"
    driver.get(url)
    element = driver.find_element_by_xpath("//a[.='Contact Us']")
    element.location_once_scrolled_into_view
    time.sleep(1)
    driver.find_element_by_xpath("//p[.='active']").location_once_scrolled_into_view
    driver.execute_script("arguments[0].scrollIntoView();",element)
    
    0 讨论(0)
  • As your final step is to invoke click() on the desired element, so instead of using the expected_conditions as presence_of_element_located() you need to use element_to_be_clickable() as follows:

    try:
        myElem = WebDriverWait(driver, delay).until(EC.element_to_be_clickable((By.NAME, '_eventId_confirmed')))
    
    0 讨论(0)
提交回复
热议问题