Css 如何使Selenium与不透明度为0的文件输入字段交互?

Css 如何使Selenium与不透明度为0的文件输入字段交互?,css,ruby,selenium-webdriver,Css,Ruby,Selenium Webdriver,在我正在进行的项目中,我们有很多不透明度为0的文件输入字段 如果我有一个带有文件上传的id和不透明度为0的输入字段 然后@driver.find_元素(id:'file upload')。send_keys full_file_path将给我一个Selenium::WebDriver::Error::ElementNotVisibleError 如何将文件成功附加到此输入 我正在使用SeleniumWebDriver for Ruby 注: 我知道这可以用Capybara实现,但使用Capyba

在我正在进行的项目中,我们有很多不透明度为0的文件输入字段

如果我有一个带有
文件上传
id
不透明度为0的输入字段

然后
@driver.find_元素(id:'file upload')。send_keys full_file_path
将给我一个
Selenium::WebDriver::Error::ElementNotVisibleError

如何将文件成功附加到此输入

我正在使用SeleniumWebDriver for Ruby

注:
我知道这可以用Capybara实现,但使用Capybara目前在我的项目中不是一个选项。

一个选项是使用
execute\u script
而不是
find\u元素。发送\u键

full_file_path = "./path/'

script = <<-JS
  document.getElementById("#file-upload").val("#{full_file_path}")
JS

@driver.execute_script script
full_file_path=“./path/”

脚本=一个选项是使用
execute\u script
而不是
find\u元素。发送\u键

full_file_path = "./path/'

script = <<-JS
  document.getElementById("#file-upload").val("#{full_file_path}")
JS

@driver.execute_script script
full_file_path=“./path/”

script=运行良好的Java代码

WebDriver driver = new ChromeDriver();

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("document.querySelector(\"input[id*='upload']\").style.opacity='1'");

driver.findElement(By.cssSelector("input[id*='upload']")).sendkeys(filepath);

Java代码,运行良好

WebDriver driver = new ChromeDriver();

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("document.querySelector(\"input[id*='upload']\").style.opacity='1'");

driver.findElement(By.cssSelector("input[id*='upload']")).sendkeys(filepath);

感谢您的回答,但我认为您无法通过编程更改文件输入字段的值。看起来这是可能的。谢谢您的回答,但我认为您无法通过编程更改文件输入字段的值。看起来这是可能的。请参阅您确定只有一个元素具有提供的Id吗?是,只有一个。请尝试等待元素可见,然后选择发送键您确定只有一个元素具有提供的Id吗?是,只有一个。请尝试等待元素可见,然后选择发送键