我正在一个项目中,我需要将Excel工作表导入网站表单。我在正确地从工作表中读取数据并使用send_keys
发送数据时遇到了麻烦。
load_rows = 0
while load_rows < 101:
add_element = driver.find_element_by_css_selector('.form-footer')
add_element.click()
load_rows = load_rows + 1
driver.execute_script("window.scrollTo(0, 1000);")
# Loading the Excel Info
filepath = "trusted_ips.xlsx"
wb = load_workbook(filepath)
ws = wb.active
max_row = sheet.max_row
max_column = sheet.max_column
print("Total columns : ", max_column)
print("Total rows : ", max_row)
似乎将所有column A
存储到name_elements.
中。因此,send_keys
函数将发送所有column A
,然后再移至下一个字段。
我希望它仅将每个元素发送到一个字段,并且我认为列表可以解决此问题。但是我不太确定。
for name_elements in driver.find_elements_by_xpath ('//*[contains(@id,
"_name")]'):
for row in ws['A2':'A100']:
for cell in row:
name_elements.send_keys(cell.value)
print(name_elements)
答案 0 :(得分:1)
您可能想使用pandas或将Excel文件从openpyxl格式化为更易于管理的字典。
我已经做过类似的工作,需要从Excel文件上输入信息的网站上删除。
我的设置类似于以下内容
import pandas as pd
#load an excel file into a pandas dataframe
df = pd.read_excel("myfile.xlsx",
sheet_name=1, # pick the first sheet
index_col='client') # set the pandas index to be the column labeled 'client'
# .to_dict converts the dataframe to a dictionary with 'client' being the key, and the remaining rows being converted to dictionary with the column label as key and row as value
for client, record in df.to_dict(orient='records'):
print(client) # use these print statements if what you're looping over is unfamiliar
print(record)
driver.find_element('#client_input).send_keys(client)
driver.find_element('#address_input').send_keys(record['address'])
答案 1 :(得分:0)
我可以通过以下方法解决此问题-
我创建了一个列表cells[]
来存储值。然后使用变量name_elements
来存储它们。设置counter=0
cells=[]
counter=0
name_elements = driver.find_elements_by_xpath ('//*[contains(@id, "_cidr")]')
第一个循环遍历excel工作表的A列,并将值存储在列表cells[]
中。
for row in ws['C2':'C100']:
for cell in row:
cells.append(cell.value)
第二个循环获取列表,因为每个值都使用计数器在下一个name_elements
上执行发送键。
for cell in cells:
name_elements[counter].send_keys(cell)
counter+=1