【问题标题】:Selenium chromedriver get element and fill formSelenium chromedriver 获取元素并填写表单
【发布时间】:2020-10-30 09:44:33
【问题描述】:

我期待在this website 填写表格。在第一步中,我无法找到与“州名:”的第一个下拉菜单对应的元素。任何帮助将不胜感激。 到目前为止,这是我尝试过的:

import os
from selenium import webdriver
driver_path = r'pathtochromedriver\chromedriver.exe'
driver = webdriver.Chrome(driver_path)
driver.get('https://app.cpcbccr.com/ccr/#/caaqm-dashboard-all/caaqm-landing/data')
elem = driver.find_element_by_name('State Name :')

【问题讨论】:

  • 该页面没有为我加载:(
  • 发布您想要到达的元素的示例 html 代码
  • 该网站现在似乎已关闭。我会尽快发表另一条评论。 @w
  • 网站现在又可以正常使用了!

标签: python web-scraping selenium-chromedriver


【解决方案1】:

您以错误的方式获取此元素。Selenium 找不到它。

如果您只想获取第一个下拉列表中的元素,请尝试以下代码:

import time
from selenium import webdriver
import os

driver_path = r'pathtochromedriver\chromedriver.exe'
driver = webdriver.Chrome(driver_path)
driver.get('https://app.cpcbccr.com/ccr/#/caaqm-dashboard-all/caaqm-landing/data')
time.sleep(8) # sleep some time for waiting(It depends on your internet speed).You could also try WebDriverWait or implicitly_wait

elem = driver.find_elements_by_class_name('toggle')[0] # get the first dropdown button
elem.click() # click it.
 
dropdown = driver.find_element_by_css_selector('.options')
for state in dropdown.find_elements_by_css_selector('li'):
    print(state.text) # get the text in dropdown menu

这给了我:

Andhra Pradesh
Assam
Bihar
Chandigarh
Delhi
Gujarat
Haryana
Jharkhand
Karnataka
Kerala
Madhya Pradesh
Maharashtra
Meghalaya
Mizoram
Nagaland
Odisha
Punjab
Rajasthan
Tamil Nadu
Telangana
Uttar Pradesh
West Bengal

在此页面上按 F12,然后:

【讨论】:

  • 非常感谢您的回答。确实有效,谢谢。你能说得这么好,你是怎么找到类名“toggle”、“options”和“li”的。这将帮助我进一步浏览页面。
  • @VinodKumar 我在 Chrome 中添加了一个关于它的示例。
  • 关于同一页面的另一个问题?我找不到“选择参数”的元素。这是在跨度之内。如何选择“全选?”
  • @VinodKumar 试试 xpath。在我的电脑中,driver.find_element_by_xpath("//*[text()='Select All']").click() 工作正常。
  • 太棒了! xpath 运行良好。在“全选”之前,我需要单击“选择参数”。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多