我正在使用selenium webdriver来尝试和模拟文件上传
我有一个文件输入字段:
<input class="upload_file_field" id="main_image_file" label="false" name="banner_image_file" type="file" />
在我的测试中使用它会导致ElementNotVisibleError
@driver.find_element(:id, "main_image_file").send_keys "/Users/dan/Desktop/sample.jpg"
我甚至尝试在尝试上传文件之前更改可见性:
@driver.execute_script("arguments[0].style.visibility='visible'; arguments[0].style.display='block'; arguments[0].style.height='100px'; arguments[0].style.width='100px'; arguments[0].style.opacity=1; arguments[0].style.zindex=20", @driver.find_element(:id, "main_image_file"))
它仍会导致ElementNotVisibleError
非常感谢任何建议
更新
好的,事实证明有几个条件可以隐藏元素:
我的问题在于转换属性。这是一种通过将输入字段完全转换为页面来隐藏输入字段的方式,因此我可以使用更好的样式按钮来使用jQuery文件上传。
之后,
@driver.find_element(:id, "main_image_file").send_keys "/Users/dan/Desktop/sample.jpg"
在模拟用户选择文件方面表现非常出色
答案 0 :(得分:0)
可能是由于某些错误导致页面未加载的情况。您可以尝试使用以下错误:
raise(@driver.page_source.to_s)
在find_element命令之前?
通过这种方式,您可以确保输入字段实际位于页面上,如Selenium所示。
答案 1 :(得分:0)
你使用Ruby但是无论如何如果这个问题仍然适用于你那么请看看我提供答案的类似问题How to click on <input type=file> across browsers using Selenium Webdriver?