【问题标题】:Select dictionary name based on dynamic values in python & selenium根据python和selenium中的动态值选择字典名称
【发布时间】:2021-07-13 07:59:51
【问题描述】:

可能是一个简单的解决方案,但我无法弄清楚如何根据动态字典名称获取字典值。

对于每种类型的参数列表,我都有字典,名称如 cparam_dict_1、cparam_dict_2、cparam_dict_3 等。 我有一个函数find_parameters 和变量r_namer_typer_num,如何根据r_num 提供的数字选择字典,这样我就可以从cparam_dict_{r_num}[r_type] 这样的字典中提取值,其中@987654327 @ 是键(INBOUND_OSB_RESOURCES 等)。

如果我直接添加完整的字典名称就可以了-

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 + '"]')

【问题讨论】:

    标签: python python-3.x selenium dictionary format-string


    【解决方案1】:

    您可以为此使用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 + '"]')
    

    【讨论】:

    • 帮了我很多!
    猜你喜欢
    • 1970-01-01
    • 2019-04-12
    • 2012-11-07
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多