3

저는 BrowserStack을 테스트하고 Python으로 작성된 Selenium WebDriver 테스트의 작은 세트를 가지고 있습니다. 내 목표는 여러 다른 브라우저에서 테스트를 실행하는 것입니다. 현재 desired_capabilities를 사용하여 브라우저, 버전, OS 등을 지정하고 있습니다.여러 브라우저에서 하나의 python webdriver 테스트를 실행하는 방법

다른 py 파일을 사용하지 않고 다른 브라우저에서 테스트를 반복하는 좋은 방법은 무엇입니까?

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import Select 
from selenium.common.exceptions import NoSuchElementException 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
import unittest, time, re 


desired_cap = {'browser': 'Chrome', 'browser_version': '33.0', 'os': 'OS X', 'os_version': 'Mavericks', 'resolution': '1600x1200'} 
desired_cap['browserstack.debug'] = True 

class RegWD(unittest.TestCase): 
    def setUp(self): 
     self.driver = webdriver.Remote(
     command_executor='http://browserstackstuff.com', 
     desired_capabilities=desired_cap) 
     self.base_url = "http://blahtestsite.com/" 
+0

"좋은 방법"은 개발자의 의견에 실제로 달려 있습니다. 하나에 대한 "좋은 방법"은 다른 것에 대한 나쁜 방법입니다. 그리고 그것은 수십 가지의 다른 방법으로 행해질 수 있습니다. 그래서 현재 가지고있는 질문은 SO에 적합하지 않습니다. – Louis

답변

4

당신은 이런 식으로 시도해 볼 수도 있습니다 :

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import Select 
from selenium.common.exceptions import NoSuchElementException 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
import unittest, time, re 


desired_cap = [] 
desired_cap.append({'browser': 'Chrome', 'browser_version': '33.0', 'os': 'OS X', 'os_version': 'Mavericks', 'resolution': '1600x1200'}) 
desired_cap.append({'browser': 'Firefox', 'browser_version': '27.0', 'os': 'OS X', 'os_version': 'Mavericks', 'resolution': '1600x1200'}) 

class RegWD(unittest.TestCase): 
    def setUp(self): 
     for driver_instance in desired_cap: 
      driver_instance['browserstack.debug'] = True 
      self.driver = webdriver.Remote(
      command_executor='http://browserstackstuff.com', 
      desired_capabilities=driver_instance) 
      self.base_url = "http://blahtestsite.com/" 

그냥 튜플을 desired_cap 확인하고 당신이 그것으로 원하는 모든 브라우저 버전에 추가

다음은 테스트 설정이다 방법입니다. 각 브라우저 인스턴스를 반복하는 루프를 추가합니다. 나는 괄호가 이상한하기 때문에 클래스의 다음과 같은 내부 클래스의 외부에서

driver_instance['browserstack.debug'] = True 

desired_cap['browserstack.debug'] = True 

를 이동했다. 특정 인스턴스를 호출하려면 [] 사이의 정수가 필요합니다. 클래스 외부에서 루프를 만들어서 각 인스턴스를 True로 설정하는 대신 브라우저의 각 인스턴스에 대해 실행되도록 클래스로 줄을 옮겼습니다.

+1

당신의'self.driver'는'setUp()'메소드가 끝날 때 항상'desired_cap' 튜플의 마지막 아이템이라고 생각합니다. 모든 테스트는 마지막 아이템 드라이버로만 실행되어야합니다. –