2012-05-07 3 views
2

Я пытаюсь протестировать приложение чата, которое требует двух разных сеансов браузера. Я попытался это следующим образом:Несколько браузеров в Selenium с Python

  • работы двух разных браузеров, 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 

Любые намеки на это?

+0

Работает отлично здесь. Какую версию сервера селена вы используете? Какие версии firefox и chrome вы используете? – Boud

+0

Иногда он выполняется нормально, но если вы выполняете его несколько раз, он начнет сбой. У Firefox и Chrome есть последние версии. – qasimzee

ответ

5

Мое предложение было бы запустить сценарий в Jenkins(Hudson) с использованием мульти-конфигурационный Проект A

  1. Скачать и установить Дженкинс.
  2. Перейти к Управление плагинами.
  3. Под Доступные плагины"Python Plugin".
  4. Дополнительно (Существуют различные Селен конкретные плагины, а также, хотя я нету эффективно использовать их. Принято считать, у вас уже есть Selenium по системе)
  5. Создать новое задание и выберите «Построить проект мульти-конфигурации».
  6. Под заголовком "Матрица конфигурации" нажмите на "Добавить ось".
  7. Выбрать "Пользовательская ось".
  8. Установить "Название" оси Охота "BROWSERS".
  9. Установить «Значения» быть браузерами, которые вы хотите протестировать, разделенными пробелом. Ex: светлячок "Internet Explorer" хром
    Примечание: Я ставлю кавычки, чтобы убедиться, что Internet Explorer рассматривается как одно значение
  10. Нажмите "Добавить сборки Шаг"
  11. Выберите «Выполнить Python Сценарий»

в блоке питона вы можете вставить код и тянуть браузер значения, установленные ранее:

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

Что происходит, так это то, что Дженкинс создаст отдельные задания, используя значения, определенные в Axis, созданные ранее, и ваш скрипт python будет иметь это значение, введенное для каждого задания.

Вы также можете расширить это с помощью других методов, но это по крайней мере поможет вам сосредоточиться на логике тестового примера и не беспокоиться о выполнении. Пример выше был основан на Linux.

Примечание: Я использую плагин SeleniumGrid с ведомым Windows для запуска своих сценариев IE из Linux.

Смежные вопросы