В Selenium webdriver для удаленного Firefox, как использовать мост OSS вместо моста w3c для подтверждения связи

Я использую selenoid для удаленного тестирования браузера в ruby. В этом случае я использую selenium-webdriver, capybara, rspec для автоматизации. И я использую метод attach_file для загрузки файла в браузер. Я хочу загрузить файл в браузере Firefox и Chrome, но это вызывает ошибку в обоих случаях;

В хроме

Selenium :: WebDriver :: Error :: UnknownCommandError: неизвестная команда: неизвестная команда: сеанс / *** 8d32e045e3 *** / se / file

В firefox

неожиданный токен в "HTTP-метод не разрешен"

Итак, после поиска я нашел решение для chrome, которое должно установить параметр w3c false в caps ['goog: chromeOptions'] ›caps ['goog: chromeOptions'] = {w3c: false} Итак, теперь Chrome использует мост OSS для подтверждения связи, но я не знаю, как это сделать в Firefox. Подобное решение недоступно для Firefox. Возможности моего браузера следующие:

if ENV['BROWSER'] == 'firefox'
    caps = Selenium::WebDriver::Remote::Capabilities.new
    caps['browserName'] = 'firefox'
    # caps['moz:firefoxOptions'] = {w3c: false} ## It is not working
  else
    caps = Selenium::WebDriver::Remote::Capabilities.new
    caps["browserName"] = "chrome"
    caps["version"] = "81.0"
    caps['goog:chromeOptions'] = {w3c: false}
  end
    caps["enableVNC"] = true
    caps["screenResolution"] = "1280x800"
    caps['sessionTimeout'] = '15m'

  Capybara.register_driver :selenium do |app|  
    Capybara::Selenium::Driver.new(app, browser: :remote,
    :desired_capabilities => caps,
    :url => ENV["REMOTE_URL"] || "http://*.*.*.*:4444/wd/hub"
    )
  end

  Capybara.configure do |config|  
   config.default_driver = :selenium
  end

person himanshu gupta    schedule 23.07.2020    source источник


Ответы (2)


Я нашел проблему. На сервере selenium, который работает на java, есть ошибка, поэтому мне нужно изменить версию 3.142.7 selenium-webdriver gem и monkey-patch. Дополнительную информацию об ошибке и решении можно найти здесь.

На данный момент мне нужно изменить свой гем и патч обезьяны в файле selenium-webdriver-3.142.7 \ lib \ selenium \ webdriver \ remote \ w3c \ commands.rb. проверьте строку ниже, которая находится в строке № 150.

upload_file: [: post, 'session /: session_id / se / file']

и обновите его до

upload_file: [:post, 'session/:session_id/file']
person himanshu gupta    schedule 27.07.2020

В образах Firefox мы поддерживаем /session/<id>/file API, добавляя двоичный файл Selenoid, который имитирует этот API, а не Geckodriver (который его не реализует).

person vania-pooh    schedule 23.07.2020
comment
Я не понял, как предоставить API и где - person himanshu gupta; 24.07.2020
comment
Все работает, только загрузка файлов не работает и выдает ошибку «HTTP-метод не разрешен». - person himanshu gupta; 24.07.2020