如何控制属于Firefox的非浏览器窗口?

时间:2014-04-15 23:38:57

标签: python selenium selenium-webdriver applescript

我在OSX上使用Python 2.x,Selenium&火狐

我使用Python& amp;自动测试javascript webapp。硒

应用程序中的一个链接(添加文件)打开了一个非浏览器的Firefox浏览器窗口,标题为"文件上传"看起来像(/是?)Finder窗口。

有没有办法可以从我的python脚本中找到并控制这个窗口?我知道Selenium无法做到这一点,但我想知道是否有可能使用像'import applescript'如果是这样的话?

2 个答案:

答案 0 :(得分:3)

我发现atomac允许我通过其辅助功能控制来控制mac应用程序(需要在系统偏好设置中为Aptana启用Mavericks - >安全和隐私 - >隐私 - >辅助功能) 。酷工具,但文档很稀疏。上面页面上提供的示例让我可以通过取消按钮关闭窗口,但是我必须查看atomac的AXClasses.py中的函数定义以找出其余部分。这是解决方案。

import atomac, time
from atomac.AXKeyCodeConstants import *

# to allow me to make firefox frontmost while testing
time.sleep(5)

# get a reference to the running app
firefox = atomac.getAppRefByLocalizedName('Firefox')

# get the window of the reference
firefoxwindow = firefox.windowsR()[0]

# send key sequence to go to my home folder
firefoxwindow.sendKeyWithModifiers('h',[COMMAND,SHIFT])

# send key sequence to select first file there
firefoxwindow.sendKeyWithModifiers('a',[COMMAND])

# press the now active Open button
openbutton = firefoxwindow.buttons('Open')[0]
openbutton.Press()

答案 1 :(得分:1)

理论上可行,但确实尴尬。我会给你一堆链接 - 不太理想,我知道,但你可以写一本书。

您需要从enabling AppleScript control of the GUI开始。然后,您想要从Applescript中阅读how to control the GUI。但是,您希望使用Python而不是AppleScript,因此您需要安装PyObjC,这是一个Python到Cocoa桥。您需要使用Scripting Bridge框架并找出(从extremely thin documentation)如何将AppleScript文档翻译为Python。