当前位置: 首页 > 知识库问答 >
问题:

从下拉菜单中一页接一页地阅读-在第二页找不到下拉菜单

冉弘化
2023-03-14

我有个传呼。

我想去每一个页面(为了得到URL)关联的下拉菜单的一个元素从页面的顶部。

    null
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time

driver = webdriver.Firefox()
driver.get("http://www.hillsproducts.com/General.aspx/en-GB/PD/a-d-canine/original/can")
select = Select(driver.find_element_by_xpath("//select[@id='productSpecifier_product']"))
value="2"
select.select_by_value(value)
print(driver.current_url)
time.sleep(10)
value="3"
select.select_by_value(value)
print(driver.current_url)

有些事我不明白。我得到的错误如下:

回溯(最近的调用为last):文件“/users/luigi/desktop/selenium_turption.py”,第19行,在select.select_by_value(值)文件“/library/frameworks/python.framework/versions/3.4/lib/python3.4/site-packages/selenium-2.46.1-py3.4.eg/selenium/webdriver/support/select.py”,第76行,在select_by_value Selenium-2.46.1-py3.4.egg/selenium/webdriver/remote/webelement.py“,第485行,在find_elements{”using“:by,”value“:value})['value']文件”/library/frameworks/python.framework/versions/3.4/lib/python3.4/site-packages/selenium-2.46.1-py3.4.egg/selenium/webdriver/remote/webelement.py“,第447行,在_execute返回6.1-py3.4.egg/selenium/webdriver/remote/webdriver.py”,第193行,在execute self.error_handler.check_response中esponse)文件“/library/frameworks/python.framework/versions/3.4/lib/python3.4/site-packages/selenium-2.46.1-py3.4.egg/selenium/webdriver/remote/errorhandler.py”第181行,在check_response引发exception_class(message,screen,stacktrace)selenium.common.exceptions.staleelementreference:message:screme:staleelementreference:var/folders/8s/hl6bx6z91yq6r81hpqg995rw0000gn/t/tmpr37ozu9l/extensions/fxdriver@googlecode.com/components/driver-components:8942)在firefoxdriver.prototype.findelementsinternal_(文件://文件:///var/folders/8s/hl6bx6z91yq6r81hpqg995rw0000gn/t/tmpr37ozu9l/extensions/fxdriver@googlecode.com/components/driver-component.js:10706)在ver@googlecode.com/components/command-processor.js:12648)在delayedcommand.prototype.execute/<(文件:///var/folders/8s/hl6bx6z91yq6r81hpqg995rw0000gn/t/tmpr37ozu9l/extensions/fxdriver@googlecode.com/components/command-processor.js:12590)

任何想法都将不胜感激!

亚历克斯回答后的更新:

Traceback(最近的调用为last):文件“/users/luigi/desktop/selenium_turption.py”,第18行,在if index>=len(select.options)中:文件“/library/frameworks/python.framework/versions/3.4/lib/python3.4/site-packages/selenium-2.46.1-py3.4.eg/selenium/webdriver/select.py”,第46行,在options return py3.4.egg/selenium/webdriver/remote/webelement.py“,第485行,在find_elements{”using“:by,”value“:value})['value']文件”/library/frameworks/python.framework/versions/3.4/lib/python3.4/site-packages/selenium-2.46.1-py3.4.egg/selenium/webdriver/remote/webelement.py“,第447行,在_execute返回self._parent.execute(enium/webdriver/remote/webdriver.py”,第193行,在execute self.error_handler.check_response(response)文件“/library/frameworks/python.framework/versions/3.4/lib/python3.4/site-packages/selenium-2.46.1-py3.4.egg/selenium/webdriver/remote/errorhandler.py”第181行,在check_response引发exception_class(message,screen,stacktrace)selenium.common.exceptions.staleElementReferenceException:message,screen,stacktrace)/folders/8s/hl6bx6z91yq6r81hpqg995rw0000gn/t/tmpzrilw39c/extensions/fxdriver@googlecode.com/components/driver-component.js:8942)在firefoxdriver.prototype.findelementsinternal_(文件:///:///var/folders/8s/hl6bx6z91yq6r81hpqg995rw0000gn/t/tmpzrilw39c/extensions/fxdriver@googlecode.com/components/driver-component.js:10706)在delayedcommand.prototype.executeinternal_h(fil:///var/folders/8s/hl6bx6z91yq6r81hpqg995rw0000gn/t/tmpzrilw39c/extensions/fxdride.com/components/components/components/components/components.js:12643)在delayedcommand.prototype.executeinternal_(文件ver@googlecode.com/components/command-processor.js:12648)在delayedcommand.prototype.execute/<(文件:///var/folders/8s/hl6bx6z91yq6r81hpqg995rw0000gn/t/tmpzrilw39c/extensions/fxdriver@googlecode.com/components/command-processor.js:12590)

共有1个答案

逑禄
2023-03-14

每次加载新页时,必须重新实例化select():

from selenium import webdriver
from selenium.webdriver.support.ui import Select


driver = webdriver.Firefox()
driver.get("http://www.hillsproducts.com/General.aspx/en-GB/PD/a-d-canine/original/can")

index = 0
while True:
    select = Select(driver.find_element_by_id("productSpecifier_product"))

    # exit the loop if all the options were seen
    if index >= len(select.options):
        break

    select.select_by_index(index)
    print(driver.current_url)

    index += 1
 类似资料:
  • 问题内容: 我有两个下拉菜单,其中的选项不是从数据库中获取的。 第一个,让用户选择一个类别。 第二个选项取决于第一个下拉菜单中的选择。例如,如果用户选择“ 第一个” 选项,则第二个下拉列表将显示 但是当用户改变主意,或先选择 第二个 选项时,第二个下拉列表现在将显示 我的问题是我该如何实现?不用数据库就可以做到吗? 谢谢! 问题答案: 参见下文,查看 不使用数据库 的 工作示例 。 使用MySQL

  • 本文向大家介绍JavaScript实现网页下拉菜单效果,包括了JavaScript实现网页下拉菜单效果的使用技巧和注意事项,需要的朋友参考一下 JavaScript(js)网页–下拉菜单制作 在网页的设计中,经常会出现二级下拉菜单,当鼠标经过时,显示二级菜单,鼠标离开时隐藏。例如新浪网 鼠标放到微博、博客或邮箱上面时,会出现一个二级菜单,鼠标离开则隐藏。 设计简单的下拉菜单栏 以上就是本文的全部内

  • 问题内容: 我是堆栈溢出的新手。我需要创建一个静态下拉列表,然后根据在静态下拉列表中选择的值创建一个动态下拉列表。只是Coldfusion和html。没有其他花哨的东西。因此,从第一个下拉菜单中,用户将选择:颜色,ID,官员,学校,然后点击“继续”按钮 然后在同一页面或不同页面上,如果选择了颜色,它将在数据库中进行查询并给出不同颜色的结果,如果选择了id,则将提供查询中的ID编号列表。如果选择了这

  • 问题内容: 首先,我讨厌提出一个已经解决的问题,但是您应该知道我在此站点上找到的其他选项对我不起作用。 基本上,我想构造一个简短的表格,其中有两个下拉框。始终显示第一个,默认情况下隐藏第二个。在第一个下拉框中选择某个选项后,我希望第二个下拉框显示。这是我的意思的完美示例: 但是,与上面的示例不同,我有单独的一组选项要显示在下拉框中,以显示在第一个下拉框中选择的每个选项,而不仅是其中一个选项。换句话

  • 问题内容: 我正在尝试制作一个简单的CSS下拉菜单,当您将鼠标悬停在链接上时,将显示子菜单。当您将鼠标悬停在li上时,我已经设法实现了这一点,但无法弄清楚如何使用链接来实现。 我之所以尝试使用链接而不是li来执行此操作,是因为我的菜单宽度为100%,并且li所占的面积比链接大,因此,如果将鼠标悬停在该区域上,则不显示该子菜单不想。 我的CSS如下: 问题答案: 如果可能的话,我会避免使用JS。这不

  • 主要内容:用法,实例,实例,选项,方法,实例Bootstrap 下拉菜单 这一章讲解了下拉菜单,但是没有涉及到交互部分,本章将具体讲解下拉菜单的交互。使用下拉菜单(Dropdown)插件,您可以向任何组件(比如导航栏、标签页、胶囊式导航菜单、按钮等)添加下拉菜单。 如果您想要单独引用该插件的功能,那么您需要引用 dropdown.js。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的