Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File upload 通过selenium上载文件,但文件输入元素被隐藏_File Upload_Selenium_Hidden Field - Fatal编程技术网

File upload 通过selenium上载文件,但文件输入元素被隐藏

File upload 通过selenium上载文件,但文件输入元素被隐藏,file-upload,selenium,hidden-field,File Upload,Selenium,Hidden Field,我试图使用Selenium上载文件,但我的输入文件元素被隐藏 我的隐藏HTML是: <input id="yui_3_9_0pr3_1_1361897421363_2239" type="file" style="visibility:hidden; width:0px; height: 0px;" multiple="" accept=""> <button id="yui_3_9_0pr3_1_1361897421363_2242" class="yui3-button"

我试图使用Selenium上载文件,但我的输入文件元素被隐藏

我的隐藏HTML是:

<input id="yui_3_9_0pr3_1_1361897421363_2239" type="file" style="visibility:hidden; width:0px; height: 0px;" multiple="" accept="">
<button id="yui_3_9_0pr3_1_1361897421363_2242" class="yui3-button" tabindex="0" aria-label="Select Files" role="button" type="button" style="width: 100%; height: 100%;">Select Files</button>

隐藏的输入文件元素的XPath是
//input[@type='file']
。不确定这是对还是错

如果元素不可见和/或不显示,硒将不会与元素交互。这可能是由各种设置引起的:

  • 可见性=隐藏
  • display=none
  • 高度=0
    宽度=0
  • 可显示坐标之外的位置(例如,左=-1)
在代码中,显示的
高度
宽度
等于0,但仅重置
高度
。尝试以下JS:

String js = "arguments[0].style.height='1'; arguments[0].style.width='1'; "
            + "arguments[0].style.visibility='visible';";
此外,检查浏览器中的
输入[@type='file']
元素,以检查是否应用了任何其他样式或类来影响可见性。在我的例子中,有一个类应用于
按钮
包装
输入[@type='file']
元素,设置
display=none

注意:更改元素可见性时,测试正在修改测试下的应用程序。这是一种侵入行为,不建议用于测试


更新:屏幕外的元素(例如
左=-1200
)在Selenium中报告未显示,但这并不阻止Selenium在其上执行
sendKeys()
方法。该方法没有返回类型,在这种情况下不会通过异常。如果元素不可见和/或不显示,Selenium将不会与元素交互。这可能是由各种设置引起的:

  • 可见性=隐藏
  • display=none
  • 高度=0
    宽度=0
  • 可显示坐标之外的位置(例如,左=-1)
在代码中,显示的
高度
宽度
等于0,但仅重置
高度
。尝试以下JS:

String js = "arguments[0].style.height='1'; arguments[0].style.width='1'; "
            + "arguments[0].style.visibility='visible';";
此外,检查浏览器中的
输入[@type='file']
元素,以检查是否应用了任何其他样式或类来影响可见性。在我的例子中,有一个类应用于
按钮
包装
输入[@type='file']
元素,设置
display=none

注意:更改元素可见性时,测试正在修改测试下的应用程序。这是一种侵入行为,不建议用于测试


更新:屏幕外的元素(例如
左=-1200
)在Selenium中报告未显示,但这并不阻止Selenium在其上执行
sendKeys()
方法。该方法没有返回类型,在这种情况下不会出现异常。

如何手动使其可见?niharika提出了一个很好的问题(例如,如果您需要将鼠标悬停在菜单上以手动使其可见-->您还需要通过selenium模拟相同的行为)…我将添加TRY CSS选择器,而不是xpath(//@input[@type='file'])在chrome中对我有效,但在firefox和safari中它抱怨元素不可见。你有没有发现这个问题?你如何手动使其可见?niharika提出了一个很好的问题(例如,如果您需要将鼠标悬停在菜单上以使其手动可见-->您还需要通过selenium模拟相同的行为)…我将添加TRY CSS选择器而不是xpath(//@input[@type='file'])在chrome中对我有效,但在firefox和safari中,它抱怨元素不可见。你有没有想过?