如何关闭 Selenium 打开的所有窗口?

4
我正在使用Selenium RC进行一些测试。我使用的驱动程序是Python。
但现在,我遇到了一个问题,就是:每次Selenium RC运行并打开一个URL时,它会打开两个窗口,一个用于登录,另一个用于显示HTML内容。但我无法在脚本中关闭它们。
以下是我的脚本:
#!/usr/bin/env python
#-*-coding:utf-8-*-
from selenium import selenium

def main():
    sel = selenium('localhost', 4444, '*firefox', 'http://www.sina.com.cn/')
    sel.start()
    try:
        sel.open('http://www.sina.com.cn/')
    except Exception, e:
        print e
    else:
        print sel.get_title()
    sel.close()
    sel.stop()

if __name__ == '__main__':
    main()

这很容易理解。我真正想要的是关闭selenium打开的所有窗口。我已经尝试了close()和stop(),但它们都不起作用。


Selenium RC中有任何错误吗? - AutomatedTester
这个看起来像是一个错误: 17:07:47.894 警告 - 注意:'/usr/bin/firefox-bin':文件是一个脚本文件,不是一个真正的可执行文件。 浏览器环境不再完全受RC控制。 - davidx
3个回答

7
我曾经遇到过类似的情况,当我在爬取网页时,我的程序会打开许多窗口。这是一个示例代码:

#!/usr/bin/python
import webbrowser
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException

driver = webdriver.Firefox()
print "Browser fired-up!"
driver.get("https://www.something.com/")
driver.implicitly_wait(5)

while True:

    try:
        playlink = driver.find_element_by_xpath("/html/body/div[2]/div[1]/div/a")
        playlink.click()
        time.sleep(3)
    except NoSuchElementException: 
        print "playlink Element not found "
    else:
        backbutton = driver.find_element_by_id("back-to-bing-text")
        backbutton.click()

    try:
        quizlink = driver.find_element_by_xpath("/html/body/div[2]/div[1]/div[1]/ul/li[1]/a/span/span[1]")
        quizlink.click()
    except NoSuchElementException: 
        print "quiz1 Element not found "
    else:
        print "quiz1 clicked"

    driver.quit()   

"driver.close()"让我困扰了一周,因为我认为它会关闭所有窗口。"driver.quit()"用于终止所有进程并关闭所有窗口。


1

我已经解决了这个问题。 这是因为我安装了firefox-bin而不是firefox。 现在我已经删除了firefox-bin并安装了firefox,现在它可以工作了。 stop()将关闭Selenium打开的所有窗口。

谢谢您的提醒 AutomatedTester


0
我建议使用Python创建一个系统命令来关闭Firefox窗口。
Bussiere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接