"运行流程打开。 {文件路径}"在robotframework中没有在Mac上工作但是"运行进程explorer.exe {filepath}正在Windows上运行

时间:2016-10-14 15:53:16

标签: macos robotframework

我在Windows10和Mac Sierra / El Capitan上使用Robotframework 3.0。我尝试使用"复制文件"来自两个系统上的RF的OperatingSystem库,但在Mac上它无法正常工作。这是Mac上的脚本:

Copy file    Testfiles${/}${file}    ${MyDir}
List Directory    ${MyDir}
Run Process open .  /select,${MyDir}${/}${file}  //open . opens the finder
Sleep   5   
Press Ctrl  NUMPAD5    //Right click on Mac
Sleep   1   
Send Keys   e   

我收到以下错误:

  

OSError:无法运行程序"打开。" (在目录" / Users / rj / PycharmProjects / automation"):error = 2,没有这样的文件或目录

Windows上运行的脚本:

Copy file   Testfiles${/}${file}    ${MyDir}
List Directory  ${MyDir}    
Run Process explorer.exe    /select,${MyDir}${/}${file}
Sleep   5   
Press Alt and Function    10  //Right click on Windows  
Sleep   1   
Send Keys   e   

其中:Testfiles是一个目录,我想将{file}复制到其他目录{MyDir}。发送键,"按Alt和功能10"是我的Java库上创建的关键字

RF打开了Testfiles目录,但没有选择"文件"复印。此方案仅在Mac中发生,并且相同的脚本在Windows上完美运行。

PS:根据Windows和Mac,我已经改变了{MyDir}的路径。

1 个答案:

答案 0 :(得分:0)

错误消息(在评论中报告)告诉您到底出了什么问题。我将重点介绍重要部分:

  

OSError:无法运行程序"打开。" (在目录" / Users / rj / PycharmProjects / automation"):error = 2,No这样的文件或目录

请注意,它告诉您它正在尝试运行名为open .的程序("打开",后跟单个空格和句点)。空格分隔格式的机器人关键字在参数之间需要两个或多个空格。由于"."是一个参数,因此"open"Run Process open . /select,${MyDir}${/}${file} //open . opens the finder # ^^ two spaces here 之间需要两个空格 ""`:

let consume = 0.25
let x = self.frame.size.width / 2.0
let y = self.frame.size.height / 2.0
let radius = (frame.size.width - 10) / 2.0
let startAngle: CGFloat = CGFloat(M_PI * (-1/2))
let endAngle = CGFloat(M_PI * 2 - M_PI/2 * consume)
let circlePath = UIBezierPath(arcCenter: CGPoint(x: x, y: y), radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: false)

circleLayer = CAShapeLayer()
circleLayer.path = circlePath.cgPath
circleLayer.fillColor = UIColor.clear.cgColor
circleLayer.strokeColor = UIColor.red.cgColor
circleLayer.lineWidth = 8.0;

let imageSize = 20.0
// Center + cos/sin(angle) * radius, then subtract half
// the image size so it will be centered on the line
let coordX: CGFloat = x + (cos(endAngle) * radius) - (imageSize / 2.0)
let coordY: CGFloat = y - (sin(endAngle) * radius) - (imageSize / 2.0)

let image = UIImage(named: "myCoolImage")
let imageView = UIImageView(image: image)
// coordX and coordY must be at last point of UIBezierPath
imageView.frame = CGRect(x: coordX, y: coordY, width: imageSize, height: imageSize)
self.addSubview(imageView)