我正在尝试测试需要两个不同浏览器 session 的聊天应用程序。我尝试了以下方法:
- 启动了两个不同的浏览器: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
对此有任何提示吗?
最佳答案
我的建议是在Jenkins(Hudson)中运行您的脚本使用多配置项目
- 下载并安装Jenkins。
- 转至管理插件。
- 在可用插件下选择“Python 插件”。
- 可选(还有各种 Selenium 特定插件,尽管我没有有效地使用它们。假设您的系统上已经安装了 Selenium)
- 创建一个新作业并选择“构建多配置项目”。
- 在“配置矩阵”标题下,点击“添加轴”。
- 选择“用户定义轴”。
- 将轴的“名称”设置为“浏览器”。
- 将“值”设置为您要测试的浏览器,并用空格分隔。
例如:firefox“internet explorer”chrome
注意:我加了引号以确保 Internet Explorer 被视为一个值 - 点击“添加构建步骤”
- 选择“执行Python脚本”
在 python block 中,您可以插入代码并提取之前设置的浏览器值:
#!/usr/bin/python
import os
BROWSER = os.getenv('BROWSERS')
发生的情况是,Jenkins 将使用之前创建的 Axis 中定义的值创建单独的作业,并且您的 python 脚本将为每个作业注入(inject)该值。
您可以使用其他方法进一步扩展它,但这至少可以帮助您专注于测试用例逻辑,而不必过多担心执行。上面的例子是基于Linux的。
注意:我使用 SeleniumGrid 插件和 Windows 从属设备来从 Linux 运行 IE 测试脚本。
关于python - Selenium 中的多个浏览器与 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10477576/