2017-08-31 13 views
0

私はPython 2.7でSelenium 3.4.3を使用してWebフォームに記入し、生成されたCSVファイルをダウンロードしています。 Chromedriverを使用すると、スクリプトはすべて終了しますが、ダウンロードフォルダのファイルは10494_20170829000000.csv.crダウンロードのようになり、0kbになります。これはChromeとPythonシェルを閉じると変更されません。私はデフォルトのダウンロードディレクトリを変更しようとしましたが、常にC:/ downloadsに行き、常にcrdownload拡張子を持っています。Python Selenium Chromedriverファイルのダウンロードが機能しない

driver = webdriver.Chrome(executable_path='C:\Python27\ArcGISx6410.3\Scripts\chromedriver.exe') 
driver.get(url) 


def find_by_xpath(locator): 
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, locator)) 
) 

return element 

class FormPage(object): 

def fill_form(self, data): 

    find_by_xpath('//input[@name = "h_UserName"]').send_keys(data['h_UserName']) 
    find_by_xpath('//input[@name = "h_Password"]').send_keys(data['h_Password']) 
    find_by_xpath('//input[@name = "h_go"]').click() 
    find_by_xpath('//select[@name = "dldataformat"]').send_keys(data['dldataformat']) 
    find_by_xpath('//select[@name = "startyear"]').send_keys(data['startyear']) 
    find_by_xpath('//select[@name = "startmonth"]').send_keys(data['startmonth']) 
    find_by_xpath('//select[@name = "startday"]').send_keys(data['startday']) 
    find_by_xpath('//input[@name = "duration"]').click() 
    find_by_xpath('//select[@name = "endyear"]').send_keys(data['endyear']) 
    find_by_xpath('//select[@name = "endmonth"]').send_keys(data['endmonth']) 
    find_by_xpath('//select[@name = "endday"]').send_keys(data['endday']) 


    return self # makes it so you can call .submit() after calling this function 

def submit(self): 
    find_by_xpath('//input[@name = "cmd"]').click() 

data = { 
'h_UserName':'', 
'h_Password':'', 
'dldataformat': '0', 
'startyear': '2017', 
'startmonth': '8', 
'startday': '29', 
'endyear': '2017', 
'endmonth': '8', 
'endday': '30' 
} 

FormPage().fill_form(data).submit() 
driver.quit() # closes the webbrowser 
+0

「WebElements」をクリックせずにダウンロードするにはどうすればよいですか? 'click()'メソッドはどこで呼び出されますか?あなたが見ている '10494_20170829000000.csv.crdownload'は前の実行の結果かもしれません。 – DebanjanB

+0

'' driver.get(url) 'の後に' time.sleep(30) 'を置くのはどうですか? –

+0

投稿完了スクリプト –

答えて

1

私はそれを理解しました。ファイルのダウンロードが完了する前にブラウザが終了していたので、driver.quit()の前にtime.sleep(10)を追加しました。

関連する問題