我在java文件中编写了一个方法,并使用该java文件方法中的帮助org.openqa.selenium.JavascriptExecutor
调用一个用java脚本文件编写的方法。这是代码片段:
public void validateFilename() {
JavascriptExecutor jsExec = (JavascriptExecutor) webDriver;
jsExec.executeScript("getFileName();");
}
function() {
window.getFileName = function() {
var fileName = "sampleFile.txt";
return fileName;
}
};
我可以从java文件中调用方法getFileName()
,但我能够获取文件名的值。如果我给alert(fileName)
它显示fileName但不能在java文件中返回该方法。
有没有办法在selenium API的帮助下将值从js文件返回到java文件 JavascriptExecutor ?
答案 0 :(得分:1)
请尝试以下代码
jsExec.executeScript( "return getFileName()");
答案 1 :(得分:1)
JavascriptExecutor.executeScript("<javascript code>")
允许您执行JavaScript代码,但是当您传递给executeScript的代码返回值时,Selenium将无法知道运行时的确切返回类型,因为JavaScript可以返回{{1 }},Number
,String
,Array
等。
为了处理所有返回类型,Object
返回一个'Object'类对象,该对象又可以处理任何返回类型的JavaScript。我们可以将返回的对象类型转换为以下任何一个受支持的对象:
executeScript
WebElement
Double
Long
Boolean
。String
。 List<Object>
。
除非值为null或没有返回值,否则返回null 答案 2 :(得分:0)
尝试获取响应时,需要将其强制转换为String。像这样:
String fileName = (String) jsExec.executeScript("return getFileName();");
答案 3 :(得分:0)
尝试以下操作:
String txt = "return document.title";
JavascriptExecutor js = (JavascriptExecutor) driver;
String res = (String)js.executeScript(txt);