Robot Framework Selenium 从字典取key报错'Dictionary '@{alias}' has no key '1''如何解决
问题解决说明
错误信息
Dictionary '@{alias}' has no key '1'的核心原因是你混淆了字典和列表的访问语法,且对Get Browser Aliases的返回值类型认知错误:
Get Browser Aliases返回的是字典对象,你已经用字典变量&{alias}接收了,字典的键是你自定义的浏览器别名(也就是你设置的ChromeRCV、RCVFF),值是对应的浏览器索引编号- 你后续用列表访问语法
@{alias}[1]尝试用数字下标访问字典,字典不存在名为1的键,所以触发报错
方案1:直接使用别名作为字典键访问
如果你要切换到火狐浏览器,直接用别名当键取值即可,对应修改两处错误代码:
# 原错误代码1:Log @{alias}[1] Log &{alias}[RCVFF] # 原错误代码2:Switch Browser @{alias}[1] Switch Browser &{alias}[RCVFF]
方案2:用浏览器ID列表的索引访问
Get Browser Ids返回的才是索引列表,可以直接用数字下标访问,如果你要按索引切换,修改切换浏览器的代码即可:
# 直接用浏览器ID列表的索引切换 Switch Browser @{browser_ID}[1]
修正后可运行完整代码
*** Settings *** Library SeleniumLibrary *** Variables *** ${url} http://google.com ${browser} chrome *** Test Cases *** TC to demostrate Browser Operation Keywords in Robot Framework [Documentation] TC to demostrate Browser Operation Keywords in Robot Framework Open Browser http://google.com Chrome alias=ChromeRCV Maximize Browser Window Open Browser about:blank ff alias=RCVFF &{alias} Get Browser Aliases # 修正:用字典键访问打印火狐对应的浏览器索引 Log &{alias}[RCVFF] @{browser_ID} Get Browser Ids Log @{browser_ID}[1] Switch Browser 1 Input Text //*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input RCVAcademy Sleep 4s # 修正:用字典键取值切换到火狐浏览器 Switch Browser &{alias}[RCVFF] Go To http://salesforce.com Close All Browsers
内容的提问来源于stack exchange,提问作者Albert Rmz
相关产品推荐
相关产品推荐

