我正在將 RSpec/Capybara 測驗的測驗執行移至 AWS Device Farm。將單個句點 (".") 發送到欄位時遇到問題。這是我的 binding.pry 除錯會話:
[5] pry(#<RSpec::ExampleGroups::Drivers>)> find('input[id^="filter"]').set('.')
Selenium::WebDriver::Error::WebDriverError: You are trying to work with something that isn't a file.
from /Users/pfong/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/selenium-webdriver-4.0.3/lib/selenium/webdriver/remote/bridge.rb:422:in `upload'
如果我發送多個字符,它作業正常。但是,在這種情況下,我希望以另一種輔助方法緩慢地一次發送一個密鑰。
我不知道為什么當我顯然是在嘗試敲擊鍵盤時,它認為我在發送檔案。
uj5u.com熱心網友回復:
看起來這是 selenium-webdriver 中的一個錯誤/功能 - 當鍵被發送到一個元素時,下面的代碼被呼叫
def send_keys_to_element(element, keys)
# TODO: rework file detectors before Selenium 4.0
if @file_detector
local_files = keys.first&.split("\n")&.map { |key| @file_detector.call(Array(key)) }&.compact
if local_files.any?
keys = local_files.map { |local_file| upload(local_file) }
keys = Array(keys.join("\n"))
end
end
...
end
Selenium 4 更改為在定義為的遠程驅動程式上具有默認檔案檢測器
->((filename, *)) { File.exist?(filename) && filename.to_s }
所以這是觸發,因為“。” 確實存在(當前目錄)。一種解決方法是在創建驅動程式 file_detector 后將其重置為 nil。
current_session.driver.browser.file_detector = nil
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/391814.html
