我正在学习使用 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()
如何使其更短并适合多个测试和多个浏览器?