ruby - not - Una excepción de Seineium webdriver
is not clickable at point selenium python (5)
Hoy, cuando uso el webbinive de selenio, recibo un error. mi plataforma es mac osx este es mi registro de excepción.
ruby-1.9.2-p0 > Selenium::WebDriver.for :firefox
Selenium::WebDriver::Error::WebDriverError: unable to bind to locking port 7054 within 45 seconds
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/firefox/socket_lock.rb:48:in `lock''
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/firefox/socket_lock.rb:29:in `locked''
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/firefox/launcher.rb:32:in `launch''
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/firefox/bridge.rb:21:in `initialize''
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/common/driver.rb:38:in `new''
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/common/driver.rb:38:in `for''
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver.rb:51:in `for''
from (irb):8
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:44:in `start''
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:8:in `start''
from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands.rb:23:in `<top (required)>''
from script/rails:6:in `require''
from script/rails:6:in `<main>''
No sé por qué pasó esto. mi ruta de Firefox es la ruta predeterminada. ¡¡Gracias por tu ayuda!!
He estado usando pepino + capibara + webdriver + paralelo_test, y he encontrado el error mencionado. Para resolver el problema, agregué lo siguiente a features / support / env.rb:
unless (env_no = ENV[''TEST_ENV_NUMBER''].to_i).zero?
# Standard, which is described at the parallel_tests github page
Capybara.server_port = 8888 + env_no
# This successfully avoids locking port error, may require less, but
# on my 8 cores vm, this works like a charm
sleep env_no * 10
end
Probablemente necesite adaptar lo anterior para que se ajuste a lo que usa, la idea es forzar un tiempo de suspensión para evitar comenzar todas las instancias de Firefox al mismo tiempo, donde una espera de 45 segundos puede no ser suficiente.
WebDriver utiliza el puerto 7054 (el "puerto de bloqueo") como un mutex para garantizar que no ejecutemos dos instancias de Firefox al mismo tiempo. Cada nueva instancia que cree esperará el mutex antes de iniciar el navegador, luego lo lanzará tan pronto como el navegador esté abierto.
Por lo tanto, esto podría ser un problema de recursos: un controlador creado previamente tarda más de 45 segundos en iniciarse y se está reteniendo para ese momento.
Si esto parece poco probable en su caso, sería interesante saber qué proceso está manteniendo el bloqueo. Intente ejecutar lsof -i TCP:7054
en los 45 segundos antes de que se agote el tiempo de espera.
Ejecutar ruby con -d (o establecer $DEBUG = true
) también proporcionará información útil para depurar esto aún más.
Hice lsof -i TCP:7054
y encontré el process_id correspondiente, y finalmente maté el proceso dado con kill -9 process_id
Y luego intenté la prueba nuevamente, y funcionó :)
Estaba obteniendo esto también y ejecutando "lsof -i TCP: 7054" y matar al pid ofensor también solucionó mi problema.
Noté que funcionaría en el puerto 7054 pero lo estaba buscando en el puerto 7055.
bundle update
hizo por mí