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

标签 python html selenium selenium-webdriver

我在从以下站点抓取数据时遇到问题: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()

最佳答案

只需更改代码中的一些内容即可使其正常工作。

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

按名称查找元素(...):

mySelect = Select(driver.find_element_by_name("ctl00$ctl43$g_d30f33ca_a5a7_4f69_bb21_cd4abc25ea12$ctl00$ddlSearch"))

还有

my=mySelect.select_by_value('0')

选择_by_visible_text('...'):

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")

find_element_by_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()

关于Python Selenium 网页抓取选择下拉菜单并以 html 形式输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39968269/

相关文章:

python - plotly 中的相机位置如何工作

Android Python 缺少基本模块

html - 面板中的未知宽度

javascript - 我无法在 Mac OSX 上使用 chromedriver 获取 selenium-webdriver

python - 无法使用Python-docx获取Word中ContentControl中的文本

python - 生成与现有一维数组具有预先指定相关性的 NumPy 一维数组?

javascript - 为什么我的代码在innerHtml 上返回 "undefined"?

html - 列中具有最小宽度的 div,Bootstrap 3.2

css - Chrome->Web Developer ->Styles对应的Firefox工具是哪个?

css - 使用 Selenium 2 WebDriver,如何使用 CSS WebElement 删除多选自动完成字段中的选项?