@@ -39,22 +39,42 @@ WebDriver.newLocalServer = function(props)
3939 if not props .fetch then
4040 error (" fetch is required" )
4141 end
42-
4342 local selfobj = Heregitage .newMetaObject ()
4443 selfobj .private_props_extends (props )
45- selfobj .private .url = " http://127.0.0.1:" .. selfobj .private .port
4644 selfobj .set_meta_method (" __gc" , Server .__gc )
4745 selfobj .set_meta_method (" close" , Server .close )
4846 selfobj .set_public_method (" newSession" , Server .newSession )
47+
48+ if props .port then
49+ selfobj .private .url = " http://127.0.0.1:" .. selfobj .private .port
50+ local command = " %s --port=%d &"
51+ command = command :format (props .chromedriver_command , props .port )
52+ print (" Starting chromedriver with command: " .. command )
53+ local ok = os.execute (command )
54+ if ok then
55+ error (" Failed to start chromedriver with command: " .. command )
56+ end
57+ else
58+ local started = false
59+ for i = 4444 , 65535 do
60+ selfobj .private .port = i
61+ selfobj .private .url = " http://127.0.0.1:" .. selfobj .private .port
4962
63+ -- Start chromedriver with proper command formatting
64+ local command = " %s --port=%d &"
65+ command = command :format (props .chromedriver_command , selfobj .private .port )
66+ print (" Starting chromedriver with command: " .. command )
67+ local ok = os.execute (command )
68+ if ok then
69+ started = true
70+ break
71+ end
72+ end
73+ if not started then
74+ error (" Failed to start chromedriver on any port between 4444 and 65535" )
75+ end
76+ end
5077
51- -- Start chromedriver with proper command formatting
52- local command = " %s --port=%d &"
53- command = command :format (props .chromedriver_command , props .port )
54-
55- print (" Starting chromedriver with command: " .. command )
56- os.execute (command )
57-
5878 -- Wait for chromedriver to start
5979 os.execute (" sleep 2" )
6080
0 commit comments