首页 > 解决方案 > Selenium 即使在超时后也找不到元素

问题描述

我正在尝试废弃网页,但在单击操作后尝试访问元素时遇到问题。

当循环第二次开始时,我得到“ stale element referenceelement is not attached to the page document”。

我知道 Selenium 找不到元素 - 另一个faredeparturetimediv 的复选框。我尝试设置各种超时,尝试阻止,刷新页面。但最终结果是一样的——找不到 element 或 get selenium.common.exceptions.TimeoutException

也许有人对问题有什么想法?我只是没有想法,如何解决它:(

PS 我正在使用 Python、Selenium 和 webdriver.chrome。

更新:

我将 webDriver 更改为 Firefox geckodriver,在循环末尾删除了“wait.until(EC.title_contains(fare.get_attribute('id')))”,并在最后添加了“driver.implicitly_wait(10)”。现在它有点工作了。尝试使用 chrome 驱动程序将implicity_wait 添加到代码中,但它导致了相同的异常。那么问题可能出在chrome webdriver上吗???

我的代码示例:

fares =driver.find_elements_by_xpath("//td[@class='inputselect 
standardlowfare']/div[1]/input[starts- 
with(@id,'FlightSelectOutboundStandardLowFare') and @type='radio']")


wait = WebDriverWait(driver, 10))
    # elem = wait.until(EC.title_contains((fare.get_attribute('id'))))
    # wait.until(EC.refreshed(EC.staleness_of(fare.get_attribute('id'))))
    # driver.implicitly_wait(10)
    # wait = WebDriverWait(driver, 30)
for fare in fares:

  fare.click()
  print("clicked " ) 
  time.sleep(5)  
    # driver.get(driver.current_url)
    # wait.until(EC.title_contains(('selectiontable')))

  departureTime = driver.find_element_by_xpath("//* [@id='ctl00_MainContent_ipcAvaDay_upnlResSelection']/div[1]/div/table/tbody/tr[4]/td")
  print ("Departure time " + departureTime.text) 
  wait.until(EC.title_contains(fare.get_attribute('id')))

标签: pythonseleniumselenium-webdriverweb-scrapingwebdriver

解决方案


推荐阅读