Juna190825 commited on
Commit
dc66fbf
·
verified ·
1 Parent(s): dce80e6
Files changed (1) hide show
  1. app.py +41 -7
app.py CHANGED
@@ -87,6 +87,38 @@ def verify_geckodriver2():
87
  logger.error(f"Version check failed: {str(e)}")
88
  raise
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  def setup_selenium():
91
  try:
92
  logger.info("Initializing Selenium Firefox driver...")
@@ -110,7 +142,7 @@ def setup_selenium():
110
  # executable_path=os.path.join(os.getcwd(), 'geckodriver'),
111
  # log_path=os.path.join(tempfile.gettempdir(), 'geckodriver.log')
112
  # )
113
-
114
  logger.info("...before: geckodriver_path")
115
  # Ensure geckodriver is executable
116
  geckodriver_path = os.path.join(os.getcwd(), 'geckodriver')
@@ -121,12 +153,14 @@ def setup_selenium():
121
  os.chmod(geckodriver_path, 0o755) # Make sure it's executable
122
  logger.info("...after: os.chmod(geckodriver_path, 0o755)")
123
  # Configure service with log_path
124
- service = Service(
125
- # executable_path=geckodriver_path,
126
- service_args=['--marionette-port', '2828'],
127
- log_path=os.path.join(tempfile.gettempdir(), 'geckodriver.log'),
128
- timeout=30
129
- )
 
 
130
  logger.info("...after: service")
131
  driver = webdriver.Firefox(
132
  options=options,
 
87
  logger.error(f"Version check failed: {str(e)}")
88
  raise
89
 
90
+ def create_service():
91
+ # 1. Verify geckodriver
92
+ geckodriver_path = shutil.which('geckodriver') or '/usr/local/bin/geckodriver'
93
+ if not os.path.exists(geckodriver_path):
94
+ raise FileNotFoundError(f"Geckodriver missing at {geckodriver_path}")
95
+
96
+ # 2. Check port availability
97
+ port = 2828
98
+ while port < 2838: # Try 10 ports
99
+ s = socket.socket()
100
+ if s.connect_ex(('127.0.0.1', port)) != 0:
101
+ break
102
+ port += 1
103
+ s.close()
104
+
105
+ # 3. Ensure log directory
106
+ log_dir = tempfile.gettempdir()
107
+ if not os.access(log_dir, os.W_OK):
108
+ log_dir = '/tmp'
109
+
110
+ # 4. Create service
111
+ try:
112
+ return Service(
113
+ executable_path=geckodriver_path,
114
+ service_args=['--marionette-port', str(port)],
115
+ log_path=os.path.join(log_dir, 'geckodriver.log'),
116
+ timeout=30
117
+ )
118
+ except Exception as e:
119
+ print(f"Service creation failed: {str(e)}")
120
+ return Service() # Fallback to simplest config
121
+
122
  def setup_selenium():
123
  try:
124
  logger.info("Initializing Selenium Firefox driver...")
 
142
  # executable_path=os.path.join(os.getcwd(), 'geckodriver'),
143
  # log_path=os.path.join(tempfile.gettempdir(), 'geckodriver.log')
144
  # )
145
+
146
  logger.info("...before: geckodriver_path")
147
  # Ensure geckodriver is executable
148
  geckodriver_path = os.path.join(os.getcwd(), 'geckodriver')
 
153
  os.chmod(geckodriver_path, 0o755) # Make sure it's executable
154
  logger.info("...after: os.chmod(geckodriver_path, 0o755)")
155
  # Configure service with log_path
156
+ # service = Service(
157
+ # # executable_path=geckodriver_path,
158
+ # service_args=['--marionette-port', '2828'],
159
+ # log_path=os.path.join(tempfile.gettempdir(), 'geckodriver.log'),
160
+ # timeout=30
161
+ # )
162
+ service = create_service()
163
+
164
  logger.info("...after: service")
165
  driver = webdriver.Firefox(
166
  options=options,