【问题标题】:How to selectively iterate through a dropdown menu with selenium如何使用 selenium 选择性地遍历下拉菜单
【发布时间】:2019-03-28 16:00:09
【问题描述】:

在这种情况下,从 2010 年到今年,我想有选择地遍历下拉菜单(我希望它是开放式的,因为我需要在将来运行它)。

我只遇到过以前的问题,其中需要一个选择或下拉菜单中的每个选择。

Chrome_Path = r"C:\Users\George\Desktop\chromedriver.exe"

driver.get("http://www.snookerdatabase.co.uk")

driver.find_element_by_xpath("""//*[@id="Table1"]/tbody/tr[3]/td[1]/b/a[2]""").click()

driver.find_element_by_name("year").click()

【问题讨论】:

  • 所选答案将回答您的问题,如果您的SELECT 没有在选择选项时刷新页面,只需删除多余的select = ... 行。

标签: python selenium iteration dropdown selected


【解决方案1】:

使用 Select 从下拉列表中选择值。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()


driver.get("http://www.snookerdatabase.co.uk")

wait=WebDriverWait(driver,5)
wait.until(expected_conditions.element_to_be_clickable((By.XPATH,'//*[@id="Table1"]/tbody/tr[3]/td[1]/b/a[2]'))).click()

i=2010
while i<2020:
 select = Select(driver.find_element_by_name("year"))
 select.select_by_value(str(i))
 i=i+1

【讨论】:

  • 为什么driver.get("https://www.youtube.com/watch?v=l5LfjYmNEJs&amp;t=160s")介于两者之间:)
  • 感谢您的回答,当它每年迭代时,您将如何抓取内容?我希望输入每年的特定链接并从链接内部抓取数据。
  • @DebanjanB : 谢谢我已经删除了:)
  • @Snoopy94 :获取 driver.page_source 并使用漂亮的汤来废弃它。
  • 我已经尝试过了,但我认为问题在于更改下拉菜单中的选择不会改变 page_source(URL 未更改),因此漂亮的汤只会一遍又一遍地刮掉 2019 年的链接
【解决方案2】:

这应该对你有帮助:

from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_name('name'))
select.select_by_index(index)
select.select_by_visible_text("text")
select.select_by_value(value)

【讨论】:

    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 2016-07-28
    相关资源
    最近更新 更多