2017-10-25 3 views
0

Ich verwende Selen, um einen Wert in einer JSON-Anfrage zu überprüfen, und ich bekomme einen Fehler. Was ich mache, ist zuerst einloggen, da ich keine Antwort bekomme, wenn ich nicht eingeloggt bin. Dann versuche ich, eine Waage aus dem JSON für den Benutzer zu holen und es zu drucken, damit ich sehen kann, dass es tatsächlich funktioniert hat. Es sieht wie ein großes Nö.KeyError: 0 in Python beim Versuch, JSON-Daten zu erhalten

Die json sieht wie folgt aus:

{ 
    "account": { 
    "balance": "28590", 
    "status": "0" 
    } 
} 

Und hier ist mein Code:

from selenium import webdriver 
import openpyxl 
import json 
import requests 

driver = webdriver.Firefox(executable_path= r"geckodriver path") 
baseURL = 'url' 

#Get username/password from excel sheet 
workbook = openpyxl.load_workbook(r"xlsx") 
sheet = workbook.get_sheet_by_name('Sheet1') 
username = str(sheet['A1'].value) 
password = str(sheet['B1'].value) 

#Open browser 
driver.get(baseURL) 
driver.maximize_window() 

#Login 
driver.find_element_by_xpath('xpath').click() 
driver.implicitly_wait(500) 
driver.find_element_by_id('email').send_keys(username) 
driver.find_element_by_id('password').send_keys(password) 
driver.find_element_by_id('login').click() 

#Check balance 
balance_api = 'balance/json' 
json_data = requests.get(balance_api).json() 
balance = json_data['account'][0]['balance'] 
print(balance) 

Welche mir diese Fehlermeldung gibt:

Traceback (most recent call last): 
File "pointsCheck.py", line 31, in <module> 
balance = json_data['account'][0]['balance'] 
KeyError: 0 

Ich habe nicht Probleme mit dem Login. Es ist alles, wenn ich versuche, das Gleichgewicht zu finden. Ich bin mir nicht sicher, ob das überhaupt der richtige Weg ist. Ich schätze jede Hilfe.

+1

Warum denken Sie, dass "account" eine Sequenz enthält? –

+0

Sieht so aus, als sollte es nur sein 'json_data ['account'] ['balance']' ... – mgilson

+0

@ IgnacioVazquez-Abrams Ich hatte ein Tutorial gesehen und sie erklärten, dass ich das brauchte, aber ich sehe, dass jeder sagt, dass das ist Das erste, was falsch ist. – drock

Antwort

1

sollten Sie json_data['account']['balance']

verwenden Es ist nicht ein Array, das Sie die 0-Index haben müssen.

+0

Ich entfernte die [0], aber jetzt sagt es KeyError: 'balance' – drock

+0

Kannst du sehen, was die Ausgabe von json_data ['account'] ist, und hier posten? –

+0

Wenn ich das mache, bekomme ich den JSON, aber es ist der Fehler, der angezeigt wird, wenn Sie ausgeloggt sind und versuchen, darauf zuzugreifen. Also bin ich mir nicht sicher ob ich nicht lange genug warte um darauf zuzugreifen oder? – drock

Verwandte Themen