如何通过BrowserStack远程驱动运行1个以上的单元测试?

问题描述 投票:0回答:1

我正在学习使用 Python 通过 Selenium 编写自动测试,以使用 BrowserStack 远程运行测试。我面临的问题是,我在课程中获得的代码仅适用于 1 个测试,没有函数和类。当我创建一个内部包含多个单元测试的类时,我的代码不起作用。

所以在BrowserStack网站上我找到了一个满足我需求的示例,但也失败了。 以下版本不起作用: 类 BrowserStackTests(unittest.TestCase): def 设置(自身): 期望的上限={ 'os_version': '索诺玛', “操作系统”:“OS X”, '浏览器': 'Safari', '浏览器版本':'17.3', 'name': 'BStack Safari OS X 索诺玛', '构建':'浏览器堆栈-build-1' } url = my_key.key desired_cap['acceptSslCerts'] = True self.driver = webdriver.Remote(command_executor=url, 期望的能力=期望的容量) self.driver.maximize_window()

def test_01_pos_link_leads_to_the_right_website(self):
    driver = self.driver
    driver.get(hp.main_url)
    hp.delay()
    print(f"Page has '{driver.title}' as Page title")
    driver.close()  

TypeError:WebDriver.init()得到了意外的关键字参数 “所需的能力”

此命令来自 BrowserStack 网站指南 --> s

elf.driver = webdriver.Remote(command_executor=url,desired_capabilities=desired_cap)

当我将 'options' iso 'desired_capability' 放在下面的这个确实可以工作,但我觉得它不太正确,行太多,可以写得更短。如果我想添加一个额外的浏览器,代码再次被破坏并且测试失败。

浏览器堆栈类(unittest.TestCase):

def get_browser_option(browser):
    switcher = {
        "safari": SafariOptions(),
    }
    return switcher.get(browser,SafariOptions())

def setUp(self):
    desired_cap = {
        'os_version': 'Sonoma',
        'os': 'OS X',
        'browser': 'Safari',
        'browser_version': '17.3',
        'name': 'BStack  parallel Safari OS X Sonoma',  # test name
        'build': 'browserstack-build-1'
    }

    bstack_options = {
        "osVersion": desired_cap["os_version"],
        "buildName": desired_cap["build"],
        "sessionName": desired_cap["name"],
        "userName": BROWSERSTACK_USERNAME,
        "accessKey": BROWSERSTACK_ACCESS_KEY
    }

    bstack_options["os"] = desired_cap["os"]
    options = self.get_browser_option()
    options.browser_version = desired_cap["browser_version"]
    options.set_capability('bstack:options', bstack_options)
    desired_cap['acceptSslCerts'] = True
    self.driver = webdriver.Remote(command_executor=URL,
                                   options = options)
    self.driver.maximize_window()

def test_01_pos_link_leads_to_the_right_website(self):
    driver = self.driver
    driver.get(hp.main_url)
    hp.delay()
    print(f"Page has '{driver.title}' as Page title")
    driver.close()  

如何使其更短并适合多个测试和多个浏览器?

python browserstack selenium-remotedriver
1个回答
0
投票

请参阅此示例存储库使用多个浏览器并行运行测试,

您还可以使用我们的 BrowserStack SDK 来减少代码集成的复杂性,它还允许您在单个 yml 文件中指定所有功能。

要通过 BrowserStack SDK 集成您现有的测试套件,请参阅此 文档

© www.soinside.com 2019 - 2024. All rights reserved.