Search code examples
pythonselenium-webdriverdebuggingform-submitwebdriverwait

Python Selenium submit works only in debug mode


My python program with selenium has a strange behavior : it works very good when I start it in debug mode but not in normal mode. The FromDate is not taken into account in normal mode.

I thought it was a timing problem and I put several wait (explicit and implicit wait) with no difference. Note that the button is a submit and not a click. Any Idea to solve this issue ?

url = "https://my.elexys.be/MarketInformation/SpotBelpex.aspx"
driver = webdriver.Chrome()
driver.get(url)
FromDate = driver.find_element("name", "ctl00$contentPlaceHolder$fromASPxDateEdit")
FromDate.clear()
FromDate.send_keys("01/11/2023")
UntilDate = driver.find_element("name", "ctl00$contentPlaceHolder$untilASPxDateEdit")
UntilDate.clear()
UntilDate.send_keys("01/12/2023")
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "ctl00$contentPlaceHolder$refreshBelpexCustomButton")))
ShowData_button = driver.find_element("name", "ctl00$contentPlaceHolder$refreshBelpexCustomButton")
ShowData_button.submit()

Solution

  • Your clicking on show data button too fast - changes are entered, but not applied as an input event.

    To simulate input event more close to user flow, I suggest to add smth like pressing enter.

    from selenium import webdriver
    from selenium.webdriver import Keys
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support.wait import WebDriverWait
    
    url = "https://my.elexys.be/MarketInformation/SpotBelpex.aspx"
    driver = webdriver.Chrome()
    wait = WebDriverWait(driver, 10)
    action_chains = ActionChains(driver)
    
    driver.get(url)
    FromDate = driver.find_element("name", "ctl00$contentPlaceHolder$fromASPxDateEdit")
    FromDate.clear()
    FromDate.send_keys("01/11/2023")
    action_chains.send_keys(Keys.ENTER).perform()
    
    UntilDate = driver.find_element("name", "ctl00$contentPlaceHolder$untilASPxDateEdit")
    UntilDate.clear()
    UntilDate.send_keys("01/12/2023")
    action_chains.send_keys(Keys.ENTER).perform()
    
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "ctl00$contentPlaceHolder$refreshBelpexCustomButton")))
    ShowData_button = driver.find_element("name", "ctl00$contentPlaceHolder$refreshBelpexCustomButton")
    ShowData_button.submit()