2017-10-09 39 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

我還沒有寫出打印報告,沒有。 –

相關問題