2017-10-09 37 views
0

目标:从Excel中获取姓名和姓氏的列表,并使用多个Firefox页面将其放入联机注册表单,并且只有一个名字和一个姓氏每页。在Python中的多个Firefox页面上提取Excel数据,Selenium

任务:

  1. 打开Firefox网页
  2. 填写与Excel,细胞 'A2' “名” 文本框中= “鲍勃”
  3. “姓” 文本框中填写与Excel ,单元格'B2'=“Apple”
  4. 单击“提交”。 - 登录结束1 -
  5. 打开一个新的Firefox网页
  6. 填写与Excel“名”文本框中,细胞“A3” =“琳达”
  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(????) 
    

使用Python 3.6.2。 Excel 2016.Windows 10 x64。硒。 请在回答中把它弄糊涂,我很新的编码:)。谢谢!!

回答

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

+0

嗯,你正在打印()声明?如果你使用depth = len(data [“bill_fname”]),接着是print(深度),它应该返回一个整数。解决这个问题的方法是,如果列的深度是静态的,只需手动设置depth = some_number。此外,对于标题= [],请确保将您放置在该列表中的标题确定为电子表格中的标题。一旦你从工作表中获得了这些头文件,你就需要将len(data [“”])更改为 –

+0

谢谢!这更接近了。 'first_name'只是我元素ID的占位符。元素ID是('bill_fname')#第一名称字段和('bill_lname')#last名称字段。我在任何地方都有第一个ID,第一个ID是'first_name',第二个ID是'last_name'。 (并按建议使用xpaths) 它返回TypeError:'numpy.float64'类型的对象没有len(),它将我的整个“1”行从csv文件打印到第一个名称字段中。 当我在深度行中尝试复数'bill_fnames'时发生KeyError,并将其更改为'bill_fname'以获得上述错误。 –

+0

我还没有写出打印报告,没有。 –

相关问题