我正在尝试抓取网页,但是在单击操作后尝试访问元素时遇到问题。
当循环第二次开始时,我得到“ stale element reference
:element is not attached to the page document
”。
我了解Selenium找不到元素-另一个fare
和departuretime
div的复选框。我试图放置所有类型的超时,尝试阻止,刷新页面。但最终结果是相同的-无法找到元素或获取selenium.common.exceptions.TimeoutException
。
也许有人对问题出了什么主意?我的想法不多了,如何解决它:(
P.S我正在使用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')))