@@ -12,10 +12,11 @@ use log::LogLevelFilter;
1212use std:: env;
1313use std:: io:: Read ;
1414use std:: path:: PathBuf ;
15- use std:: sync:: { Once , ONCE_INIT } ;
15+ use std:: sync:: { Arc , Once , ONCE_INIT } ;
1616use std:: thread:: sleep;
1717use std:: time:: Duration ;
1818use webdriver_client:: { Driver , DriverSession , HttpDriverBuilder , LocationStrategy } ;
19+ use webdriver_client:: chrome:: ChromeDriver ;
1920use webdriver_client:: firefox:: GeckoDriver ;
2021use webdriver_client:: messages:: ExecuteCmd ;
2122
@@ -335,6 +336,24 @@ fn test_http_driver() {
335336 assert_eq ! ( url, test_url) ;
336337}
337338
339+ #[ test]
340+ fn launch_multiple_chromes ( ) {
341+ ensure_logging_init ( ) ;
342+
343+ let server = FileServer :: new ( ) ;
344+ let chromedriver = Arc :: new ( ChromeDriver :: build ( ) . spawn ( ) . unwrap ( ) ) ;
345+ let chrome1 = chromedriver. clone ( ) . session ( ) . expect ( "Error starting first browser" ) ;
346+ let chrome2 = chromedriver. session ( ) . expect ( "Error starting second browser" ) ;
347+
348+ let page1 = server. url ( "/page1.html" ) ;
349+ let page2 = server. url ( "/page2.html" ) ;
350+ chrome1. go ( & page1) . expect ( "Error getting page1" ) ;
351+ chrome2. go ( & page2) . expect ( "Error getting page2" ) ;
352+
353+ assert_eq ! ( & chrome1. get_current_url( ) . expect( "Error getting url 1" ) , & page1) ;
354+ assert_eq ! ( & chrome2. get_current_url( ) . expect( "Error getting url 2" ) , & page2) ;
355+ }
356+
338357fn ensure_logging_init ( ) {
339358 static DONE : Once = ONCE_INIT ;
340359 DONE . call_once ( || init_logging ( ) ) ;
0 commit comments