【问题标题】:Multiple browsers in Selenium with PythonSelenium 中的多个浏览器与 Python
【发布时间】:2012-05-15 16:40:45
【问题描述】:

我正在尝试测试需要两个不同浏览器会话的聊天应用程序。我通过以下方式进行了尝试:

  • 已启动两种不同的浏览器,firefox 和 google chrome
  • 试图打开网站的主页。

以下是代码:

from selenium import selenium
from selenium import webdriver
from threading import Thread
import unittest, time, re
import time


class envolveChatCheck(unittest.TestCase):

    def get_sauce_browser(self, port=4444, browser="*firefox"):
        return selenium('localhost', port, browser, 'http://example.com/')

    def get_browser_and_wait(self, browser, browser_num):
        print "starting browser %s" % browser_num
        browser.start()
        browser.open("/")
        print "browser %s ready" % browser_num

    def setUp(self):
        self.verificationErrors = []
        self.b1 = self.get_sauce_browser(browser='*googlechrome', port=4444)
        self.b2 = self.get_sauce_browser(browser='*firefox', port=4444)
        print "all browsers ready"

    def test_envolve_chat_check(self):
        print "starting b1"
        self.b1.start()
        print "starting b2"
        self.b2.start()

        print "opening homepage b1"
        self.b1.open("/")
        self.b1.wait_for_page_to_load("30000")

        print "opening homepage b2"
        self.b2.open("/")
        self.b2.wait_for_page_to_load("30000")


    def tearDown(self):
        self.b1.stop()
        self.b2.stop()
        self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
    unittest.main()

以下是我得到的错误:

Traceback (most recent call last):
File "envolveChatCheck.py", line 32, in test_envolve_chat_check
self.b1.open("/")
File "/usr/local/lib/python2.6/dist-packages/selenium/selenium.py", line 774, in open
self.do_command("open", [url,ignoreResponseCode])
File "/usr/local/lib/python2.6/dist-packages/selenium/selenium.py", line 214, in do_command
raise Exception, data
Exception: ERROR: Got a null result

对此有何提示?

【问题讨论】:

  • 在这里工作正常。您使用哪个版本的 selenium 服务器?您使用哪个版本的 Firefox 和 chrome?
  • 有时它会正常执行,但如果你多次执行它,它就会开始崩溃。 Firefox 和 chrome 都有最新版本。

标签: python selenium automated-tests


【解决方案1】:

我的建议是使用多配置项目在Jenkins(Hudson) 中运行您的脚本

  1. 下载并安装 Jenkins
  2. 转到管理插件
  3. 可用插件下选择“Python 插件”
  4. 可选(也有各种特定于 Selenium 的插件,虽然我没有有效地使用它们。假设您已经在系统上安装了 Selenium)
  5. 创建一个新作业并选择“构建多配置项目”
  6. 在标题“配置矩阵”下点击“添加轴”
  7. 选择“用户定义的轴”
  8. 将轴的 “名称” 设置为类似于 “浏览器”
  9. "Values" 设置为您要测试的浏览器,并用空格分隔。 例如:firefox "internet explorer" chrome
    注意:我用引号括起来以确保 Internet Explorer 被视为一个值
  10. 点击“添加构建步骤”
  11. 选择“执行 Python 脚本”

在 python 块中,您可以插入代码并提取之前设置的浏览器值:

#!/usr/bin/python
import os
BROWSER = os.getenv('BROWSERS')

发生的情况是 Jenkins 将使用之前创建的 Axis 中定义的值创建单独的作业,并且您的 python 脚本将为每个作业注入该值。

您可以使用其他方法进一步扩展它,但这至少可以帮助您专注于测试用例逻辑,而不必担心执行。上面的例子是基于 Linux 的。

注意:我使用 SeleniumGrid 插件和 Windows 从属设备从 Linux 运行我的 IE 测试脚本。

【讨论】:

    猜你喜欢
    • 2022-12-05
    • 2018-08-24
    • 2016-03-22
    • 2015-02-21
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多