我正在用Selenium編寫代碼來導航網站(如測試我們的網站之前的做法)。我試圖在3個獨立的下拉菜單中迭代值,並檢索帶有產品數據的結束頁面。到目前爲止,我可以從第一個菜單中打印數據,並從第二個菜單打印數據,但只能打印第一個菜單創建的列表中的第一個元素......這可能很難遵循,因此考慮下面的例子:Selenium - 元素不再附加到DOM - Python
DropdownA包含的值:
甲 乙 ç d
當選擇 'A',DropdownB被填充有值:
我的目標是覆蓋整個樹和返回值:
A - 1,2,3
乙 - 2,3,4-
Ç - 3,4,5
等
我的腳本彈回來後:
A - 1,2,3
這裏是我的代碼示例:
from pyvirtualdisplay import Display
from selenium import webdriver
import time
display = Display(visible=0, size=(1024, 768))
display.start()
driver = webdriver.Firefox()
url = 'http://www.website.com'
driver.get(url)
driver.find_element_by_id('ctl00_ContentPlaceHolder1_pc_selector_selMake').click()
make_list = driver.find_elements_by_css_selector('#ctl00_ContentPlaceHolder1_pc_selector_selMake option')
for raw_make in make_list:
if 'Select' in raw_make.text:
continue
make = raw_make.text
print make
raw_make.click()
time.sleep(1)
model_list = driver.find_elements_by_css_selector('#ctl00_ContentPlaceHolder1_pc_selector_selModel option')
for raw_model in model_list:
if 'Select' in raw_model.text:
continue
model = raw_model.text
print ' ', model
driver.close()
display.stop()
確切的錯誤是:selenium.common.exceptions.StaleElementReferenceException: Message: u'Element is no longer attached to the DOM'
我很新的硒,因此,如果這是一個愚蠢的問題,原諒我。我花了更多的時間,而不是承認嘗試任何想到的事情,或者我在網上閱讀並沒有任何幫助(部分原因是因爲我遇到的大多數示例都是用Java編寫的,我不是一個Java人......)。
任何幫助,建議,解決方案,資源等,非常感謝。
在此先感謝!
你能告訴哪條線發生這個錯誤嗎? – Zarkonnen
錯誤發生在第一個for循環的第一行。 '如果'選擇'在raw_make.text:' – That1Guy
@Zarkonnen也就是說,循環中的第二個循環。代碼在第一次通過時執行得很好。 – That1Guy