Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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
selenium上的JavaScriptexecutor setAttribute值_Javascript_Selenium_Selenium Webdriver_Internet Explorer 11 - Fatal编程技术网

selenium上的JavaScriptexecutor setAttribute值

selenium上的JavaScriptexecutor setAttribute值,javascript,selenium,selenium-webdriver,internet-explorer-11,Javascript,Selenium,Selenium Webdriver,Internet Explorer 11,我在IE11上执行selenium自动化。现在来看一个元素,比如ele元素发送键(字符)不能直接工作。因此,我试图通过JavaScript Executor更改标记的“value”属性。一旦我改变了它,我将通过ele.getAttribute('value')来验证它。但那一次,我得到的值仍然是空的,就像前面一样。我的考试也同样不及格 HTML代码 <form id="upload" method="post" action="/upload" enctype="multipart/for

我在IE11上执行selenium自动化。现在来看一个元素,比如ele<代码>元素发送键(字符)不能直接工作。因此,我试图通过JavaScript Executor更改
标记的“value”属性。一旦我改变了它,我将通过
ele.getAttribute('value')
来验证它。但那一次,我得到的值仍然是空的,就像前面一样。我的考试也同样不及格

HTML代码

<form id="upload" method="post" action="/upload" enctype="multipart/form-data" style="width: 90%">
<label for="uploadinputFile">
<br style="clear:all">
<input id="browse_file" class="bttn-primary" type="button" value="Browse">
<input id="file_input_browser" type="file" name="upload_File">
<div id="button">
<input id="submit" class="bttn-primary" type="submit" disabled="" value="Upload">
</div>
</form>
WebElement brw=driver.findElement(By.id("file_input_browser"));
((JavascriptExecutor) driver).executeScript("document.getElementById('file_input_browser').setAttribute('value', 'new value for element')");
System.out.println("value:"+brw.getAttribute("value"));
我还使用了以下JavaScriptExecutor:
((JavascriptExecutor)驱动程序).executeScript(“参数[0].setAttribute('value','“+c+”),brw)//c是一个字符串


但是每次我将
brw.getAttribute(“value”)
的输出设置为空/null

时,您必须在操作DOM之后而不是之前实例化
WebElement
。否则,存储的
WebElement
将不包含您要查找的信息,并将返回
null

driver.executeScript("document.getElementById('ID').setAttribute('value','NEW_VALUE');");
System.out.print("value: "+driver.findElement(By.id("ID")).getAttribute("value"));

您必须在操作DOM之后而不是之前实例化
WebElement
。否则,存储的
WebElement
将不包含您要查找的信息,并将返回
null

driver.executeScript("document.getElementById('ID').setAttribute('value','NEW_VALUE');");
System.out.print("value: "+driver.findElement(By.id("ID")).getAttribute("value"));

.sendKeys()
的具体问题是什么?代码是否引发了一些异常?因为操作DOM仅仅是一种解决方法。它不会抛出任何错误…selenium代码正在运行..但是由于某些原因IE没有像手动那样进行提示。所以脚本一直在等待下一个元素出现。问题是,如果这个SendKeys()有效,那么只会启用,我可以单击它。但由于sendKeys没有输入任何值,因此上载按钮保持禁用状态。单击时手动打开Windows默认文件选择以选择文件。在Firefox中,我单击浏览器选项,然后通过Robot类选择文件。但在IE11上,尽管点击正在发生,但windows默认文件选择没有弹出。因此,我试图为这两个标记执行sendKeys(filepath)。但这也不起作用,然后我直接尝试通过javaScriptExecutor将文件路径注入DOM元素。如果您能告诉我windows默认文件选择弹出窗口的解决方法,这也解决了我的目的。当我们在IE上单击浏览器选项时,手动弹出windows默认文件选择窗口,但在自动操作中,成功单击该元素后无法打开该窗口。点击用户界面后的方法失败没有响应…它不会弹出该文件选择选项。我还试着用Actions类单击…谢谢Adv中的。你能发布一个链接到该页面吗?
.sendKeys()
的具体问题是什么?代码是否引发了一些异常?因为操作DOM仅仅是一种解决方法。它不会抛出任何错误…selenium代码正在运行..但是由于某些原因IE没有像手动那样进行提示。所以脚本一直在等待下一个元素出现。问题是,如果这个SendKeys()有效,那么只会启用,我可以单击它。但由于sendKeys没有输入任何值,因此上载按钮保持禁用状态。单击时手动打开Windows默认文件选择以选择文件。在Firefox中,我单击浏览器选项,然后通过Robot类选择文件。但在IE11上,尽管点击正在发生,但windows默认文件选择没有弹出。因此,我试图为这两个标记执行sendKeys(filepath)。但这也不起作用,然后我直接尝试通过javaScriptExecutor将文件路径注入DOM元素。如果您能告诉我windows默认文件选择弹出窗口的解决方法,这也解决了我的目的。当我们在IE上单击浏览器选项时,手动弹出windows默认文件选择窗口,但在自动操作中,成功单击该元素后无法打开该窗口。点击用户界面后的方法失败没有响应…它不会弹出该文件选择选项。我还试着用Actions类点击…谢谢Adv。你能发布一个链接到这个页面吗?这很奇怪,我稍微编辑了我的帖子,以更好地代表我测试的内容。发布的代码对我来说很好,但是我使用的是运行在Chrome上的Selenium 3.1.0,而不是IE-可能问题与IE有关。我正在尝试使用IE11的Selenium 2.53.1…让我再次检查一下最新的Selenium…这很奇怪,我稍微编辑了我的帖子,以更好地表示我测试的内容。发布的代码对我来说很好,但是我使用的是运行在Chrome上的Selenium 3.1.0,而不是IE-可能问题与IE有关。我正在尝试将Selenium 2.53.1与IE11结合使用…让我再次与最新的Selenium一起检查这一点。。。