在Python,Selenium

时间:2017-10-09 02:07:55

标签: excel python-3.x selenium-webdriver openpyxl

目标:从Excel中获取名字和姓氏列表,并使用多个firefox页面将它们放入在线注册表单中,每页只有一个名字和一个姓氏。

任务:

  1. 打开firefox页面
  2. 使用Excel填写“名字”文本框,单元格'A2'=“Bob”
  3. 使用Excel填写“姓氏”文本框,单元格'B2'=“Apple”
  4. 点击“提交”。 - 注册结束1 -
  5. 打开一个新的Firefox页面
  6. 使用Excel填写“名字”文本框,单元格'A3'=“Linda”
  7. 使用Excel填写“姓氏”文本框,单元格'B3'=“橙色”
  8. 点击“提交”。

    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(????)
    
  9. 使用Python 3.6.2。 Excel 2016.Windows 10 x64。硒。 请在答案中愚蠢,我对编码很新:)。谢谢!

1 个答案:

答案 0 :(得分:0)

这是我通常的格式:

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或右键单击 - > Inspect以查找xpath。 '输入'是主要的标签名称,' name'将是'输入'的任何元素。有" first_name"字符串字面嵌入。