gpt4 book ai didi

ruby - Selenium file_detector 找不到要上传到 selenium 网格的文件

转载 作者:数据小太阳 更新时间:2023-10-29 07:58:17 29 4
gpt4 key购买 nike

使用 selenium webdriver 3.12 并在 saucelabs( Selenium 网格)上运行文件上传测试作为 Win 10 chrome 66。我尝试实现文件检测器并将 key 发送到我的代码中,以便系统可以将文件从我的本地机器并在 saucelabs 中使用它,但遇到错误:

Selenium::WebDriver::Error::ExpectedError:
invalid argument: File not found : /Users/john.doe/Work/project/spec/support/apps/files/suggested_content/valid_sc.csv
(Session info: chrome=66.0.3359.117)
(Driver info: chromedriver=2.38.551601 (edb21f07fc70e9027c746edd3201443e011a61ed),platform=Windows NT 10.0.10586 x86_64)

我实现它的方法是添加文件检测器作为我的规范助手的一部分,然后在我的规范文件顶部需要规范助手,然后使用 sendkeys 发送文件上传路径。类似于 Saucelabs best practices here

我的规范助手中的一个片段...我已经实例化了驱动程序并添加了文件检测器的代码(这与 sauce 和 ruby​​doc 的使用略有不同,因为它使用的是当前 session 驱动程序而不仅仅是驱动程序):

       Capybara::Selenium::Driver.new(app,
browser: :remote,
url: url,
desired_capabilities: capabilities)
end

Capybara.current_session.driver.browser.file_detector = lambda do |args|
str = args.first.to_s
str if File.exist?(str)
end

以及调用什么来上传文件:

    def add_file(file_name = 'valid_sc.csv')
path = './spec/support/apps/files/suggested_content/'
expose_file_upload
page.find('input[id*=content--add-file')
.send_keys(File.expand_path(path + file_name))
end

该文件肯定位于该路径中,并且当我在本地运行测试时工作正常。我在这里错过了什么?

最佳答案

这为我修复了它。注册远程驱动程序后,我将此代码段的底部添加到我的 spec_helper.rb

Capybara.register_driver :selenium do |app|
# ...

Capybara::Selenium::Driver.new(app,
browser: :remote,
url: url,
desired_capabilities: capabilities)
end

# Add file upload capability on remote driver
page.driver.browser.file_detector = lambda do |args|
str = args.first.to_s
str if File.exist?(str)
end

确保仅在使用远程驱动程序时执行此操作,否则常规的本地 selenium 驱动程序将不知道如何处理 file_detector 方法。

关于ruby - Selenium file_detector 找不到要上传到 selenium 网格的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51989015/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com