【发布时间】:2020-03-12 13:08:29
【问题描述】:
我正在使用 Python、Selenium、openpyxl 来在线填写表格。 为了填写表格,我从 excel (.xlsx) 上的特定单元格中获取值。 (要测试代码,您可以只创建 2 列的 Excel 文件,在 A 列下插入一些名称,在 B 列下插入一些年龄。
- 我从单元格
A2中获取此人的姓名并将其插入在线表格中 - 我从单元格
B2获取此人的 LASTNAME 并将其插入在线表格中 - 然后我点击“重置”(这是一个示例,但在实际代码中我将点击另存为草稿)。
我想创建一个循环,其中代码将从driver.get("https://www.roboform.com/filling-test-all-fields") 重新开始,再次转到我需要填写表格的页面,但这次我想采取:
- 在单元格
A3中输入此人的姓名并将其插入在线表格中 - 在单元格
B3中,此人的 LASTNAME 并将其插入在线表格中 - 然后再次点击“作为草稿发送”
然后,另一个循环从第 4 行插入数据,所以我想编程从driver.get("https://www.roboform.com/filling-test-all-fields") 再次读取我的代码,但这次从A4 和B4 中获取值,依此类推,直到excel上的行是空的。
使用以下代码,我可以将数据插入在线表单:
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import WebDriver
from selenium.common.exceptions import NoSuchElementException
import openpyxl
driver: WebDriver =
webdriver.Chrome("/Users/HHHHH/PycharmProjects/excel/driver/chromedriver")
driver.maximize_window()
excel_document = openpyxl.load_workbook(r"/Users/XPATH OF THE EXCEL FILE YOU CREATE TO TEST THIS CODE",
data_only=True)
sheet = excel_document["Sheet1"]
driver.get("https://www.roboform.com/filling-test-all-fields")
#Insert in the form the Name of the person
prevsymbol = sheet["A2"].value
if prevsymbol == None:
pass
else:
try:
driver.find_element_by_name("02frstname").send_keys(sheet["A2"].value)
except NoSuchElementException:
print("A2:(name) Not Found")
#Insert in the form the Last Name of the person
prevsymbol = sheet["B2"].value
if prevsymbol == None:
pass
else:
try:
driver.find_element_by_name("04lastname").send_keys(sheet["B2"].value)
except NoSuchElementException:
print("B2:(Lastname) Not Found")
#click Save as a draft
driver.find_element_by_xpath("//*[@value='Reset']").click()
【问题讨论】:
标签: python excel selenium loops rows