Select 基于 python & selenium 中的动态值的字典名称
Select dictionary name based on dynamic values in python & selenium
可能是一个简单的解决方案,但我无法弄清楚如何根据动态字典名称获取字典值。
我为每种类型的参数列表创建了字典,名称如 cparam_dict_1、cparam_dict_2、cparam_dict_3 等。
我有一个带有变量 r_name
、r_type
、r_num
的函数 find_parameters
,如何根据 r_num
提供的数字 select 字典所以我可以从像 cparam_dict_{r_num}[r_type]
这样的字典中提取值,其中 r_type
是键(INBOUND_OSB_RESOURCES 等)。
如果我直接添加完整的字典名称就可以了-
element = driver.find_element_by_xpath('//table[@id="' + cparam_dict_1[r_type] + '"]//tbody//tr//td//input[@value="' + r_name + '"]')
但如果我可以 select 基于 r_num
的字典名称,那将会很有帮助
cparam_dict_1 = {
"INBOUND_OSB_RESOURCES": "tbl_ecp_choice-parameter-28808620766985",
"OUTBOUND_OSB_RESOURCES": "tbl_ecp_choice-parameter-11676168985228",
"PASSTHROUGH_OSB_RESOURCES": "tbl_ecp_choice-parameter-11676170588702",
"BPM_BPEL_COMPOSITE_RESOURCES": "tbl_ecp_choice-parameter-54262573455103813"
}
cparam_dict_2 = {
"INBOUND_OSB_RESOURCES": "tbl_ecp_choice-parameter-28808620778433",
"OUTBOUND_OSB_RESOURCES": "tbl_ecp_choice-parameter-116761689785625",
"PASSTHROUGH_OSB_RESOURCES": "tbl_ecp_choice-parameter-11676170586563",
"BPM_BPEL_COMPOSITE_RESOURCES": "tbl_ecp_choice-parameter-54262573455112907"
}
def find_parameters(r_type,r_name,r_num):
element = driver.find_element_by_xpath('//table[@id="' + cparam_dict_{r_num}[r_type] + '"]//tbody//tr//td//input[@value="' + r_name + '"]')
你可以使用 globals()
def find_parameters(r_type,r_name,r_num):
element = driver.find_element_by_xpath('//table[@id="' + globals()[f'cparam_dict_{r_num}'][r_type] + '"]//tbody//tr//td//input[@value="' + r_name + '"]')
可能是一个简单的解决方案,但我无法弄清楚如何根据动态字典名称获取字典值。
我为每种类型的参数列表创建了字典,名称如 cparam_dict_1、cparam_dict_2、cparam_dict_3 等。
我有一个带有变量 r_name
、r_type
、r_num
的函数 find_parameters
,如何根据 r_num
提供的数字 select 字典所以我可以从像 cparam_dict_{r_num}[r_type]
这样的字典中提取值,其中 r_type
是键(INBOUND_OSB_RESOURCES 等)。
如果我直接添加完整的字典名称就可以了-
element = driver.find_element_by_xpath('//table[@id="' + cparam_dict_1[r_type] + '"]//tbody//tr//td//input[@value="' + r_name + '"]')
但如果我可以 select 基于 r_num
的字典名称,那将会很有帮助cparam_dict_1 = {
"INBOUND_OSB_RESOURCES": "tbl_ecp_choice-parameter-28808620766985",
"OUTBOUND_OSB_RESOURCES": "tbl_ecp_choice-parameter-11676168985228",
"PASSTHROUGH_OSB_RESOURCES": "tbl_ecp_choice-parameter-11676170588702",
"BPM_BPEL_COMPOSITE_RESOURCES": "tbl_ecp_choice-parameter-54262573455103813"
}
cparam_dict_2 = {
"INBOUND_OSB_RESOURCES": "tbl_ecp_choice-parameter-28808620778433",
"OUTBOUND_OSB_RESOURCES": "tbl_ecp_choice-parameter-116761689785625",
"PASSTHROUGH_OSB_RESOURCES": "tbl_ecp_choice-parameter-11676170586563",
"BPM_BPEL_COMPOSITE_RESOURCES": "tbl_ecp_choice-parameter-54262573455112907"
}
def find_parameters(r_type,r_name,r_num):
element = driver.find_element_by_xpath('//table[@id="' + cparam_dict_{r_num}[r_type] + '"]//tbody//tr//td//input[@value="' + r_name + '"]')
你可以使用 globals()
def find_parameters(r_type,r_name,r_num):
element = driver.find_element_by_xpath('//table[@id="' + globals()[f'cparam_dict_{r_num}'][r_type] + '"]//tbody//tr//td//input[@value="' + r_name + '"]')