我在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}的路径。
答案 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)