机器人:EXECDIR中的反斜杠,Windows路径

时间:2014-11-13 21:13:49

标签: windows selenium robotframework backslash

基本问题:我想在存储在EXECDIR中的便携式Firefox中启用使用selenium 2的运行机器人测试。

${firefox_binary}=  Evaluate    sys.modules['selenium.webdriver.firefox.firefox_binary'].FirefoxBinary('${EXECDIR}${/}Firefox${/}App${/}Firefox${/}Firefox.exe')    sys, selenium.webdriver 
${firefox_profile}= Evaluate    sys.modules['selenium.webdriver.firefox.firefox_profile'].FirefoxProfile('${EXECDIR}${/}Lib${/}SeleniumFirefoxProfile') sys, selenium.webdriver 
Create Webdriver    Firefox firefox_binary=${firefox_binary}    firefox_profile=${firefox_profile}  

如果我使用的是实际路径,而不是$ {EXECDIR},那就可以了。

EXECDIR就像C:\Users\bart.simpson\workspace\projectname。问题是反斜杠(后跟b)将转换为ASCII反斜杠字符。测试日志然后说:

Evaluating expression 'sys.modules['selenium.webdriver.firefox.firefox_profile'].FirefoxProfile('C:\Users\bart.simpson\workspace\projectname\Lib\SeleniumFirefoxProfile')' failed: OSError: [Errno 20047] Unknown error: 20047: 'C:\\Users\x08art.simpson\\workspace\\projectname\\Lib\\SeleniumFirefoxProfile'

当然我已尝试使用${fixedExecDir}= Replace String ${EXECDIR} '\' '/'等,但没有任何改变结果。

想法?感谢。

1 个答案:

答案 0 :(得分:0)

尝试通过放置" r"将路径视为原始字符串文字。紧接在${EXECDIR}之前的引用之前:

${firefox_binary}=  Evaluate    ....FirefoxBinary(r'${EXECDIR}${/}Firefox...')

这应该有效,因为在将字符串传递给python之前替换了机器人变量,因此python解释器只能看到完整的字符串。

如果您不熟悉python原始字符串文字,请参阅以下问题:

What exactly do “u” and “r” string flags do in Python, and what are raw string literals?