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

时间:2016-08-09 22:43:16

标签: css ruby selenium-webdriver

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

如果我的输入字段为id file_uploadopacity:0

然后@driver.find_element(id: 'file-upload').send_keys full_file_path会给我一个Selenium::WebDriver::Error::ElementNotVisibleError

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

我正在使用selenium-webdriver for Ruby

注意: 我知道这可能与Capybara有关,但使用Capybara目前在我的项目中不是一个选项。

2 个答案:

答案 0 :(得分:0)

其中一个选项是使用execute_script代替find_element.send_keys

full_file_path = "./path/'

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

@driver.execute_script script

答案 1 :(得分:0)

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);