Css 如何使Selenium与不透明度为0的文件输入字段交互?
在我正在进行的项目中,我们有很多不透明度为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
文件上传的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吗?是,只有一个。请尝试等待元素可见,然后选择发送键