我为一个ASP.net网站并在运行时遇到stale element reference: element is not attached to the page document
错误。在
脚本假设从下拉列表中逐个单击项目。共有4个下拉列表,当页面加载到第一个下拉列表时,下拉列表有选项,当我们单击第一个下拉列表的第二个选项时,在一段时间后页面将数据加载到第二个下拉列表中,其他下拉列表的过程相同,因此通过下面的代码,我可以选择第二个、第三个、第四个。。。。第一个下拉选项,然后在选择第二个下拉列表的第二个选项时出错
这是密码
# -*- coding: utf-8 -*-
import sys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
def selectYear():
year = driver.find_element_by_id("carYear")
ActionChains(driver).move_to_element(year).click(year)
year.click()
WebDriverWait(year, 100).until(
EC.presence_of_element_located((By.XPATH, ".//option[2]")))
yearOptions = year.find_elements_by_tag_name("option")
for option in yearOptions:
optVal = option.get_attribute("value")
if optVal is 0:
continue
else:
print("Car Year is : %s" % optVal)
dataList['Year'] = optVal
ActionChains(driver).move_to_element(option).click(option)
option.click()
selectModel()
def selectMake(driver):
make = driver.find_element_by_id("carMakeId")
ActionChains(driver).move_to_element(make).click(make)
make.click()
WebDriverWait(make, 100).until(
EC.presence_of_element_located((By.XPATH, ".//option[2]")))
makeOptions = make.find_elements_by_tag_name("option")
print makeOptions
for option in makeOptions:
optVal = option.get_attribute("value")
if optVal == '0':
continue
else:
print("Make is : %s" % optVal)
dataList['Make'] = optVal
ActionChains(driver).move_to_element(option).click(option)
option.click()
selectYear()
def main():
driver.get("https://www.getunitronic.com/")
WebDriverWait(driver, 200).until(
EC.presence_of_element_located((By.ID, "carMakeId")))
selectMake(driver)
# driver.close()
if __name__ == "__main__":
dataList = {'Make' : "Make",
'Year' : "Year",
'Model' : "Model",
'Engine' : "Engine",
'Category' : "Category",
'Product Type' : "Product Type",
'Title' : "Title",
'Stock Power' : "Stock Power",
'Octane' : "Octane",
'HP' : "HP",
'LB-FT' : "LB-FT",
'Desctiption' : "Description",
'Installation' : "Installation",
'UniCONNECT+' : "UniCONNECT+",
'Features' : "Features",
'Price' : "Price",
'Media1' : "Media1",
'Hardware Included' : "Hardware Included",
'Recommended Software' : "Recommended Software",
'Related Hardware' : "Related Hardware"}
driver = webdriver.Chrome()
sys.exit(main())
错误:
^{pr2}$
更改您的代码
到
^{pr2}$元素集合中的元素一旦更改就会过时。所以当你面对这样的问题时,你需要重新获得元素
相关问题 更多 >
编程相关推荐