簡體   English   中英

Python Selenium 網頁抓取選擇下拉並以 html 形式輸入文本

[英]Python Selenium Webpage Scraping Selecting Drop Down and entering text in html form

我在從以下站點抓取數據時遇到問題: 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"))

要 find_element_by_name(...):

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

不確定這是否是您的情況。 但是從你的問題中跳出來的一件事是文本框輸入......通常,在填寫網站文本框時,即使文本清晰可見,文本框方法實際上直到在焦點(光標)被單擊或選項卡移出並遠離文本框。

在“單擊提交”之前,首先將文本光標移出文本輸入框,通常可以解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM