我的带有selenium的python程序有一个奇怪的行为:当我在调试模式下启动它但在正常模式下启动它时它运行得很好。在正常模式下不考虑 FromDate。
我认为这是一个时序问题,我放置了几次等待(显式和隐式等待),没有任何区别。请注意,该按钮是提交按钮,而不是单击按钮。 有解决这个问题的想法吗?
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()
您单击“显示数据”按钮的速度太快 - 已输入更改,但未作为输入事件应用。
为了模拟更接近用户流程的输入事件,我建议添加诸如按 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()