根据python和Selenium中的动态值选择字典名称



可能是一个简单的解决方案,但我不知道如何基于动态字典名称获取字典值。

我为每种类型的参数列表都提供了字典,名称包括cparam_dict_1、cparam_dct_2、cparam_dict_3等。我有一个函数find_parameters,其中包含变量r_namer_typer_num。我如何根据r_num提供的数字选择字典,以便从像cparam_dict_{r_num}[r_type]这样的字典中提取值,其中r_type是键(INBOUND_OSB_REOURCES等(。

如果我直接添加完整的词典名称-,它就会起作用

element = driver.find_element_by_xpath('//table[@id="' + cparam_dict_1[r_type] + '"]//tbody//tr//td//input[@value="' + r_name + '"]')

但如果我能根据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 + '"]')

最新更新