我正在编写代码来使用 Selenium 浏览网站(作为测试我们网站之前的练习)。我正在尝试迭代 3 个单独的下拉菜单中的值并检索带有产品数据的结束页面。
到目前为止,我能够打印第一个菜单中的数据和第二个菜单中的关联数据,但仅限于第一个菜单创建的列表中的第一个元素......这可能很难理解,所以考虑这个例子:
DropdownA 包含值:
A B C D
选择“A”时,DropdownB 将填充值:
1 2 3
我的目标是覆盖整个树并返回值:
A - 1,2,3
B - 2,3,4
C - 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'
我对 Selenium 很陌生,所以如果这是一个愚蠢的问题,请原谅我。我花费的时间比我愿意承认尝试任何想到的任何事情都多,或者我在网上阅读过并且没有任何帮助(部分原因是我遇到的大多数示例都是用 Java 编写的,而且我我不是 Java 人...)。
非常感谢任何帮助、建议、解决方案、资源等。
提前致谢!