Python Selenium网页抓取选择下拉列表并以html形式输入文本

2024-10-01 13:46:22 发布

您现在位置:Python中文网/ 问答频道 /正文

从以下站点抓取数据时遇到问题:https://arcc.sdcounty.ca.gov/Pages/Assessors-Roll-Tax.aspx。在

我必须执行以下步骤:

  1. 选择下拉选项“街道地址”

  2. 在文本字段中输入街道地址(即43 Hadar Dr)

  3. 单击“提交”按钮。

单击提交后,我应该被引导到一个页面,该页面具有给定地址的APN编号。在

问题: 我能做以上的步骤。但是,当我选择一个下拉选项并在文本框中输入地址时,由于某种原因文本框输入地址在单击“提交”之前被清除,只有当我选择了一个下拉选项时。在

我尝试过使用Selenium的预期条件在选择了下拉选项后触发文本框中的输入,但是什么也没做。我正在寻找任何帮助,以确定为什么有这个问题,以及任何建议的解决办法。在

在谢谢。非常感谢感谢。在

我的代码:

    driver = webdriver.Chrome()
    driver.get('https://arcc.sdcounty.ca.gov/Pages/Assessors-Roll-Tax.aspx')
    #Selects drop down option ('Street Address')
    mySelect =        Select(driver.find_element_by_id("ctl00_ctl43_g_d30f33ca_a5a7_4f69_bb21_cd4abc25  ea12_ctl00_ddlSearch"))
    my=mySelect.select_by_value('0')  
    wait = WebDriverWait(driver,300)
    #Enter address in text box to left of drop down
   driver.find_element_by_id("ctl00_ctl43_g_d30f33ca_a5a7_4f69_bb21_cd4abc25ea12_ct    l00_txtSearch").send_keys("11493 hadar dr")
    #Click 'Submit' button to return API numbers associated with address
    driver.find_element_by_id("ctl00_ctl43_g_d30f33ca_a5a7_4f69_bb21_cd4abc25ea12_ctl00_btnSearch").click()
    driver.quit()

Tags: httpsidby地址选项driverelementfind
2条回答

只是在你的代码中做了一些改变。在

mySelect = Select(driver.find_element_by_id("ctl00_ctl43_g_d30f33ca_a5a7_4f69_bb21_cd4abc25  ea12_ctl00_ddlSearch"))

按名称(…)查找元素:

^{pr2}$

以及

my=mySelect.select_by_value('0')

要按“可见的”文本(“…”)选择“u”:

my = mySelect.select_by_visible_text("Street Address")

以及

driver.find_element_by_id("ctl00_ctl43_g_d30f33ca_a5a7_4f69_bb21_cd4abc25ea12_ct l00_txtSearch").send_keys("11493 hadar dr")

用xpath(…)查找元素,因为我通常在通过xpath查找元素时得到更好的结果。在

driver.find_element_by_xpath('//*[@id="ctl00_ctl43_g_d30f33ca_a5a7_4f69_bb21_cd4abc25ea12_ctl00_txtSearch"]').send_keys("11493 hadar dr")

一切都是这样的:

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

driver = webdriver.Chrome()
driver.get('https://arcc.sdcounty.ca.gov/Pages/Assessors-Roll-Tax.aspx')

#Selects drop down option ('Street Address')
mySelect = Select(driver.find_element_by_name("ctl00$ctl43$g_d30f33ca_a5a7_4f69_bb21_cd4abc25ea12$ctl00$ddlSearch"))
my = mySelect.select_by_visible_text("Street Address")

wait = WebDriverWait(driver,300)

#Enter address in text box to left of drop down
driver.find_element_by_xpath('//*[@id="ctl00_ctl43_g_d30f33ca_a5a7_4f69_bb21_cd4abc25ea12_ctl00_txtSearch"]').send_keys("11493 hadar dr")

#Click 'Submit' button to return API numbers associated with address
driver.find_element_by_id("ctl00_ctl43_g_d30f33ca_a5a7_4f69_bb21_cd4abc25ea12_ctl00_btnSearch").click()

driver.quit()

不知道这是否是你的情况。但是有一件事从你的问题中跳出来。。。通常,在填写网站文本框时,即使文本是清晰可见的,文本实际上并不是通过文本框方法读取的,直到点击焦点(光标)或将其选项卡移出文本框。在

在“单击提交”之前,先将文本光标从文本输入框中移出,通常可以解决此问题。在

相关问题 更多 >