gpt4 book ai didi

Selenium - 元素不再附加到 DOM - Python

转载 作者:行者123 更新时间:2023-12-04 05:29:08 24 4
gpt4 key购买 nike

我正在编写代码来使用 Selenium 浏览网站(作为测试我们网站之前的练习)。我试图在 3 个单独的下拉菜单中迭代值并检索包含产品数据的最终页面。

到目前为止,我能够打印第一个菜单中的数据和第二个菜单中的关联数据,但只能打印第一个菜单创建的列表中的第一个元素......这可能很难理解,所以考虑这个例子:

DropdownA 包含值:




D

选择“A”时,DropdownB 将填充以下值:

1
2
3

我的目标是覆盖整个树并返回值:

A - 1,2,3

乙 - 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 人...)。

非常感谢任何帮助、建议、解决方案、资源等。

提前致谢!

最佳答案

最终,听起来您正在迭代的 DOM 元素不再存在。你可能会问,这怎么会发生?我相信问题出在以下方面:您通过调用获取下拉列表中的所有标签:

driver.find_elements_by_css_selector('#ctl00_ContentPlaceHolder1_pc_selector_selMake option')

然后迭代每个标签并点击每个标签。我最好的猜测是每次单击时都可能会重新生成下拉菜单,从而使您正在迭代的对象无效。因此第一次迭代成功,但此后的每次迭代都呈现不成功。

希望这有帮助!

关于Selenium - 元素不再附加到 DOM - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12843662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com