1313from threading import Thread
1414
1515load_dotenv ()
16- BROWSERSTACK_USERNAME = os .environ .get ("BROWSERSTACK_USERNAME" ) or "BROWSERSTACK_USERNAME"
17- BROWSERSTACK_ACCESS_KEY = os .environ .get ("BROWSERSTACK_ACCESS_KEY" ) or "BROWSERSTACK_ACCESS_KEY"
16+ BROWSERSTACK_USERNAME = os .environ .get (
17+ "BROWSERSTACK_USERNAME" ) or "BROWSERSTACK_USERNAME"
18+ BROWSERSTACK_ACCESS_KEY = os .environ .get (
19+ "BROWSERSTACK_ACCESS_KEY" ) or "BROWSERSTACK_ACCESS_KEY"
1820URL = os .environ .get ("URL" ) or "https://hub.browserstack.com/wd/hub"
1921
2022capabilities = [
21- {
22- "os" : "OS X" ,
23- "osVersion" : "Monterey" ,
24- "buildName" : "browserstack-build-1" ,
25- "sessionName" : "BStack parallel python" ,
26- "browserName" : "chrome" ,
27- "browserVersion" : "latest"
28- },
29- {
30- "os" : "Windows" ,
31- "osVersion" : "11" ,
32- "buildName" : "browserstack-build-1" ,
33- "sessionName" : "BStack parallel python" ,
34- "browserName" : "firefox" ,
35- "browserVersion" : "latest"
36- },
37- {
38- "osVersion" : "10" ,
39- "deviceName" : "Samsung Galaxy S20" ,
40- "buildName" : "browserstack-build-1" ,
41- "sessionName" : "BStack parallel python" ,
42- "browserName" : "chrome" ,
43- },
23+ {
24+ "os" : "OS X" ,
25+ "osVersion" : "Monterey" ,
26+ "buildName" : "browserstack-build-1" ,
27+ "sessionName" : "BStack parallel python" ,
28+ "browserName" : "chrome" ,
29+ "browserVersion" : "latest"
30+ },
31+ {
32+ "os" : "Windows" ,
33+ "osVersion" : "11" ,
34+ "buildName" : "browserstack-build-1" ,
35+ "sessionName" : "BStack parallel python" ,
36+ "browserName" : "firefox" ,
37+ "browserVersion" : "latest"
38+ },
39+ {
40+ "osVersion" : "10" ,
41+ "deviceName" : "Samsung Galaxy S20" ,
42+ "buildName" : "browserstack-build-1" ,
43+ "sessionName" : "BStack parallel python" ,
44+ "browserName" : "chrome" ,
45+ },
4446]
4547
48+
4649def get_browser_option (browser ):
4750 switcher = {
4851 "chrome" : ChromeOptions (),
@@ -52,27 +55,28 @@ def get_browser_option(browser):
5255 }
5356 return switcher .get (browser , ChromeOptions ())
5457
58+
5559def run_session (cap ):
5660 bstack_options = {
57- "osVersion" : cap ["osVersion" ],
58- "buildName" : cap ["buildName" ],
59- "sessionName" : cap ["sessionName" ],
61+ "osVersion" : cap ["osVersion" ],
62+ "buildName" : cap ["buildName" ],
63+ "sessionName" : cap ["sessionName" ],
6064 "userName" : BROWSERSTACK_USERNAME ,
6165 "accessKey" : BROWSERSTACK_ACCESS_KEY
6266 }
6367 if "os" in cap :
64- bstack_options ["os" ] = cap ["os" ]
68+ bstack_options ["os" ] = cap ["os" ]
6569 if "deviceName" in cap :
66- bstack_options ['deviceName' ] = cap ["deviceName" ]
70+ bstack_options ['deviceName' ] = cap ["deviceName" ]
6771 bstack_options ["source" ] = "python:sample-main:v1.1"
6872 if cap ['browserName' ] in ['ios' ]:
69- cap ['browserName' ] = 'safari'
73+ cap ['browserName' ] = 'safari'
7074 options = get_browser_option (cap ["browserName" ].lower ())
7175 if "browserVersion" in cap :
72- options .browser_version = cap ["browserVersion" ]
76+ options .browser_version = cap ["browserVersion" ]
7377 options .set_capability ('bstack:options' , bstack_options )
7478 if cap ['browserName' ].lower () == 'samsung' :
75- options .set_capability ('browserName' , 'samsung' )
79+ options .set_capability ('browserName' , 'samsung' )
7680 driver = webdriver .Remote (
7781 command_executor = URL ,
7882 options = options )
@@ -88,7 +92,7 @@ def run_session(cap):
8892 # Check if the Cart pane is visible
8993 WebDriverWait (driver , 10 ).until (EC .visibility_of_element_located (
9094 (By .CLASS_NAME , "float-cart__content" )))
91- ## Get text of product in cart
95+ # Get text of product in cart
9296 item_in_cart = WebDriverWait (driver , 10 ).until (EC .visibility_of_element_located (
9397 (By .XPATH , '//*[@id="__next"]/div/div/div[2]/div[2]/div[2]/div/div[3]/p[1]' ))).text
9498 # Verify whether the product (iPhone 12) is added to cart
@@ -107,5 +111,6 @@ def run_session(cap):
107111 # Stop the driver
108112 driver .quit ()
109113
114+
110115for cap in capabilities :
111- Thread (target = run_session , args = (cap ,)).start ()
116+ Thread (target = run_session , args = (cap ,)).start ()
0 commit comments