因此,我能够回答之前关于如何从JSON数组中获取JSON的值的问题,但现在我尝试在Python中转换它(对于selenium)。
下面是JSON的数组:
[
{
"id": 3328367679,
"inbox_id": 35584,
"subject": "Open this message"
},
{
"id": 3328364404,
"inbox_id": 35584,
"subject": "Another message"
},
{
"id": 3328363502,
"inbox_id": 35584,
"subject": "Open this message"
},
{
"id": 3328357254,
"inbox_id": 35584,
"subject": "Open this message"
},
{
"id": 3328349654,
"inbox_id": 35584,
"subject": "Open this message"
}
]
下面是我的脚本,它在Cypress Javascript中运行,它的工作原理是获取JSON的索引,该索引给出第一个相同的"subject"
,即"Open this message"
,然后使用相同的索引返回"id"
,即3328367679
function getMessageID() {
cy.request({
url: Cypress.env('url'),
method: 'GET',
headers: {
'Api-Token': Cypress.env('token'),
'Content-Type': 'application/json;charset=utf-8'
},
})
.then((response) => {
expect(response.status).to.eq(200)
var messages = response.body
var messageTitle = 'Open this message'
for (var i = 0; i < messages.length; i++){
if (messages[i].subject == messageTitle){
return messages[i].id
break;
}
}
})
}
getMessageID()
我该如何在Python中进行转换呢?这是我当前的脚本,当我打印它的时候,它给了我None
的值。我在特性文件中运行get_id
,因为它们是连接的:
def get_messages():
url = "https://uri.io/api/accounts/fdsdfs/inboxes/dfsfds/messages/"
headers = {
"Content-Type": "application/json;charset=utf-8",
"Api-Token": "123345dsfgsdrgf3456dfg5634dfv5"
}
response = requests.get(url=url, headers=headers)
return response.json()
@staticmethod
def get_id():
messages = ClassName.get_messages()
message_title = "Open this message"
for item in messages:
if item["subject"] == message_title:
print("Message id is " + item["id"])
return item["id"]
break
1条答案
按热度按时间exdqitrt1#
问题是连接部分,你不能把一个字符串连接到一个整数,所以在循环中你应该把id转换成string:
除此之外,如果响应与您在示例顶部发布的响应相同,则不需要
return response.json()
,您可以使用它,就像return response
一样简单经过这些调整之后,您的代码解析功能最终运行良好。
如果这不能解决您的问题,请打印
get_id
函数中的messages
变量并更新您的问题,因为错误是在api调用或格式化响应中,而不是在解析中。