我有一個腳本,它使用回圈函式自動用來自 csv 的資料填充 Web 表單。我的問題是腳本在提交表單之前回圈。因此,每列的所有行資料都粘貼到每個相應的表單域中,而不是粘貼到每個表單域的單行資料中,提交,然后回圈到下一行。
我認為問題是該網站要求用戶在提交完成之前從選項串列中確認地址(通常從選項串列中選擇的第一個地址是正確的)。如果不這樣做,提交失敗并且回圈粘貼下一行的資料。
腳本是否可以在回圈之前有 20 秒的延遲,以便我可以在腳本提交表單之前查看地址選項欄位,然后再次回圈以獲取下一行資料?或者更好的是,我希望腳本自動從第一個地址選項串列中確認地址,然后提交。
謝謝你們!
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import csv
import time
import pandas as pd
# import csv file
table = pd.read_csv('...test2.csv')
print(table)
address1 = table['Address2'].tolist()
unit1 = table['Unit2'].tolist()
unittype1 = table['Unit Type'].tolist()
beds1 = table['Beds2'].tolist()
bath1 = table['Baths2'].tolist()
rent1 = table['Rent2'].tolist()
# open chrome
# driver = Webdriver.chrome("C:\Python Tools\chromedriver.exe")
s = Service("C:\Python Tools\chromedriver.exe")
driver = webdriver.Chrome(service=s)
# Enter login
driver.get("https://hadashboard.gosection8.com/pages/login/Login.aspx")
driver.implicitly_wait(5)
driver.find_element(By.CSS_SELECTOR, ".form > input:nth-child(3)").send_keys("hiddenlogin")
driver.find_element(By.CSS_SELECTOR, ".form > input:nth-child(6)").send_keys("hiddenpw")
driver.find_element(By.CSS_SELECTOR, ".m-col-12:nth-child(8)").click()
driver.implicitly_wait(10)
# go to rent reasonableness analysis
driver.find_element(By.CSS_SELECTOR, ".not-now-btn").click()
driver.find_element(By.CSS_SELECTOR, ".clear-fix > div > .rent-btn-row > .primary-button").click()
driver.implicitly_wait(10)
# template code for loop https://stackoverflow.com/questions/66933061/looping-through-several-columns-and-rows-from-csv-to-fill-a-form
address = driver.find_element(By.ID, "SubjectPage_AutocompleteAddress")
unit = driver.find_element(By.ID, 'SubjectPage_AddressLine2_Auto')
beds = driver.find_element(By.ID, "SubjectPage_BedroomCount")
baths = driver.find_element(By.ID, "SubjectPage_FullBathCount")
rent = driver.find_element(By.ID, "SubjectPage_AskingRent")
# unittype fix later!
for address1, unit1, unittype1, beds1, bath1, rent1 in zip(address1, unit1, unittype1, beds1, bath1, rent1):
address.send_keys(address1)
driver.implicitly_wait(10)
unit.send_keys(unit1)
driver.implicitly_wait(10)
#unit.send_keys(unittype)
#driver.implicitly_wait(10)
beds.send_keys(beds1)
driver.implicitly_wait(10)
baths.send_keys(bath1)
driver.implicitly_wait(10)
rent.send_keys(rent1)
driver.implicitly_wait(10)
driver.find_element(By.CSS_SELECTOR, "#SubjectPage_PropertyType_Fake > select").click()
dropdown = driver.find_element(By.CSS_SELECTOR, "#SubjectPage_PropertyType_Fake > select")
dropdown.find_element(By.XPATH, "//option[. = 'Apartment']").click()
submit = driver.find_element(By.ID, "SubjectPage_AnalyzeBottom").click()
uj5u.com熱心網友回復:
您可以使用 python sleep()函式在回圈開始前以秒為單位實作延遲。請注意這一點,因為它不是基于時間以外的條件運行的。如果您有大量資料,或者如果您在處理表單時遇到延遲,此計時器仍將導致睡眠功能超時并且回圈將開始運行。我建議您在運行回圈之前將條件設定為 true。例如,如果表單已完成,則將變數設定為 True。然后,當該條件保持為真時,運行回圈。但是當回圈完成回圈和加載資料時,回圈需要將變數的值設定為 false。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/429388.html
上一篇:如何從函式回傳多個值?
