首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中自动化Selenium测试

在Python中自动化Selenium测试
EN

Stack Overflow用户
提问于 2011-02-07 22:49:21
回答 5查看 7K关注 0票数 5

我有一个Django项目,我正在尝试用Selenium编写浏览器交互测试。我的目标是让Hudson/Jenkins的测试自动化。到目前为止,我可以让测试命中Django服务器,但从服务器日志中我看到它命中的是url /selenium-server/driver,而不是正确的路径。

以下是我的代码(基于Firefox的Selenium IDE插件生成的代码:

代码语言:javascript
复制
from selenium import selenium


class AccountAdminPageTests(unittest.TestCase):
    def setUp(self):
        self.selenium = selenium("localhost", 
                                 8000, 
                                 "*chrome", 
                                 "http://localhost:8000/")
        self.selenium.start()
        self.selenium.open("/")

    def test_ok(self):
        self.assertTrue(self.selenium.is_text_present('OK'))

    def tearDown(self):
        self.selenium.stop()


if __name__ == "__main__":
    unittest.main()

有什么线索吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-07 23:02:46

我从未见过确切的错误,但我认为Selenium正在尝试连接到您的应用程序,而不是selenium Server (一个.jar文件)。

selenium服务器的端口应该是selenium()的第一个参数

这应该默认为端口4444,您可能必须从下面开始

代码语言:javascript
复制
$ java -jar selenium-server.jar

下面是我是如何在CI服务器上运行selenium测试的。

代码语言:javascript
复制
from multiprocessing import Process
from django.test import TestCase
from selenium import selenium

class SeleniumFixtureCase(TestCase):
"""
Wrapper to multiprocess localhost server and selenium instance on one
test run.
"""

def setUp(self):
    "Make the selenium connection"
    TestCase.setUp(self)
    self.server = Process(target=serve)
    self.server.start()
    self.verificationErrors = []
    self.selenium = selenium("localhost", 4444, "*firefox",
                             "http://localhost:8000/")
    self.selenium.start()

def tearDown(self):
    "Kill processes"
    TestCase.tearDown(self)
    self.server.terminate()
    self.selenium.stop()
    self.assertEqual([], self.verificationErrors)

def _login(self):
    "Login as Albert Camus"
    self.selenium.open("http://localhost:8000/admin/")
    self.selenium.wait_for_page_to_load("30000")
    self.selenium.type("id_username", "albert")
    self.selenium.type("id_password", "albert")
    self.selenium.click("//input[@value='Log in']")
    self.selenium.wait_for_page_to_load("30000")
票数 9
EN

Stack Overflow用户

发布于 2011-08-10 04:47:53

我和一位同事使用django和selenium 2创建了一些自动化的selenium测试。它不需要使用jar文件就可以工作。这是一个显示我们的测试用例的link to the code

票数 4
EN

Stack Overflow用户

发布于 2013-06-26 04:51:49

我们目前使用django - Jenkins成功地从jenkins运行了django测试:https://github.com/kmmbvnr/django-jenkins

目前,django以LiveServerTestCase:https://docs.djangoproject.com/en/1.4/topics/testing/#django.test.LiveServerTestCase的形式提供了对Selenium的支持

LiveServerTestCase启动了一个django服务器,允许像Selenium这样的客户端连接到它。

此外,您现在可以使用PhantomJs作为web驱动程序进行无头测试。这使得CI集成方式变得更容易。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4922619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档