在 Python、Selenium 中跨多个 Firefox 页面拉取 Excel 数据
Pulling Excel data across multiple firefox pages in Python, Selenium
目标:从 Excel 中获取名字和姓氏列表,并将它们放入在线注册表中,使用多个 firefox 页面,每页只有一个名字和一个姓氏。
任务:
- 打开 firefox 页面
- 在"First Name"文本框中填写Excel,单元格'A2'="Bob"
- 在"Last Name"文本框中填写Excel,单元格'B2'="Apple"
- 单击 'Submit'。 -- 注册 1 结束 --
- 打开一个新的 firefox 页面
- 在"First Name"文本框中填写Excel,单元格'A3'="Linda"
- 在"Last Name"文本框中填写Excel,单元格'B3'="Orange"
单击'Submit'。
for x in range(2):
from selenium import webdriver
browser=webdriver.Firefox()
browser.get('The Website')
import openpyxl
wb=openpyxl.load_workbook('Names.xlsx')
sheet=wb.get_sheet_by_name('Full Names')
tuple(sheet['A2':'B3'])
#I'm guessing about this next part:
for rowOfCellObjects in sheet['A2':'B3']:
for cellObj in rowOfCellObjects:
browser.find_element_by_id('first_name').send_keys(????)
browser.find_element_by_id('last_name').send_keys(????)
使用 Python 3.6.2。 Excel 2016。Windows 10 x64。硒。
请在答案中将其简化,我是编码的新手:)。谢谢!!
这是我常用的格式:
import pandas as pd
from selenium import webdriver
driver = webdriver.Firefox()
headers = ['first_name', 'last_name']
data = pd.read_csv('Names.csv', names=headers) #Youll want to change the .xlsx to .csv
depth = len(data['first_names']) #this finds how deep the columns are
url = "www.website.com"
driver.get(url) #opens browser
for i in range (0,depth):
driver.find_element_by_xpath('first_name').send_keys(data['first_name'][i])
driver.find_element_by_xpath('last_name').send_keys(data['last_name'][i])
driver.find_element_by_xpath('submit').click()
另请注意,在find_element_by_xpath中,格式为:
driver.find_element_by_xpath('//input[@name = "first_name"]')
或类似。您需要 ctl+i 或右键单击-->检查以找到 xpath。
'input' 是主标记名称,'name' 将是 'input' 中嵌入了 "first_name" 字符串的任何元素。
目标:从 Excel 中获取名字和姓氏列表,并将它们放入在线注册表中,使用多个 firefox 页面,每页只有一个名字和一个姓氏。
任务:
- 打开 firefox 页面
- 在"First Name"文本框中填写Excel,单元格'A2'="Bob"
- 在"Last Name"文本框中填写Excel,单元格'B2'="Apple"
- 单击 'Submit'。 -- 注册 1 结束 --
- 打开一个新的 firefox 页面
- 在"First Name"文本框中填写Excel,单元格'A3'="Linda"
- 在"Last Name"文本框中填写Excel,单元格'B3'="Orange"
单击'Submit'。
for x in range(2): from selenium import webdriver browser=webdriver.Firefox() browser.get('The Website') import openpyxl wb=openpyxl.load_workbook('Names.xlsx') sheet=wb.get_sheet_by_name('Full Names') tuple(sheet['A2':'B3']) #I'm guessing about this next part: for rowOfCellObjects in sheet['A2':'B3']: for cellObj in rowOfCellObjects: browser.find_element_by_id('first_name').send_keys(????) browser.find_element_by_id('last_name').send_keys(????)
使用 Python 3.6.2。 Excel 2016。Windows 10 x64。硒。 请在答案中将其简化,我是编码的新手:)。谢谢!!
这是我常用的格式:
import pandas as pd
from selenium import webdriver
driver = webdriver.Firefox()
headers = ['first_name', 'last_name']
data = pd.read_csv('Names.csv', names=headers) #Youll want to change the .xlsx to .csv
depth = len(data['first_names']) #this finds how deep the columns are
url = "www.website.com"
driver.get(url) #opens browser
for i in range (0,depth):
driver.find_element_by_xpath('first_name').send_keys(data['first_name'][i])
driver.find_element_by_xpath('last_name').send_keys(data['last_name'][i])
driver.find_element_by_xpath('submit').click()
另请注意,在find_element_by_xpath中,格式为:
driver.find_element_by_xpath('//input[@name = "first_name"]')
或类似。您需要 ctl+i 或右键单击-->检查以找到 xpath。 'input' 是主标记名称,'name' 将是 'input' 中嵌入了 "first_name" 字符串的任何元素。