Selenium Javascript执行器返回null
Selenium Javascript executor returns null
当运行Selenium JavascriptExecutor
时,我有以下返回null
的JavaScript代码。然而,在Firefox开发人员控制台中运行的相同代码返回了一个值。
function tmp(){
var attrb = jQuery(jQuery("[name='q']")[0]).attr('type');
if(typeof attrb !== 'undefined' && attrb !== false){
return attrb;
} else {
return '';
}
}
tmp();
下面是我的WebDriver代码,JS与上面相同:
JavascriptExecutor jsExec = (JavascriptExecutor)driver;
Object inpType =
jsExec.executeScript("function tmp(){...}tmp();");
System.out.println("Type: " + inpType);
上面输出的是null
,而不是"text"字符串。有什么想法吗?
您需要在executeScript()方法中使用return tmp()而不是tmp(。查找相关参考driver.executeScript()为简单javascript 返回NullPointerException 您应该将 问题是在 我不知道细节,但函数定义似乎返回null。 由于executeScript返回可以返回的第一个值,因此它返回null。如果您不定义函数并以内联方式编写代码,它就会起作用。 这应该打印您的期望值。 编辑:此外,您发布的代码不会逃脱return
语句添加到要从jsExec.executeScript(...)
内部返回的结果executeScript()
中执行两条语句。tmp()的函数定义和tmp(的函数调用。JavascriptExecutor jsExec = (JavascriptExecutor) driver;
Object inpType = jsExec
.executeScript("var attrb = jQuery(jQuery('"[name='q']'")[0]).attr('type');"+
"if(typeof attrb !== 'undefined' && attrb !== false)" +
"{return attrb;}" +
"else{return '';}");
System.out.println("-------------- Type: " + inpType);
[name='q']
周围的""
。这会结束字符串并导致语法错误。
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- php函数的ajax html$_POST值返回null
- 是否可以 document.getElementsByTagName('head')[0] ever 返回 null
- Firebase:查询返回null
- 在浅层渲染的反应组件上,Enzyme为道具返回null
- jQuery Multiselect插件返回null长度(应为0?)
- 如何处理getElementById返回Null
- JavaScript中的RegExp返回null
- Javascript 中的 RegEx 返回 Null
- 加载时的getelementbyID返回null
- 谷歌脚本在第二次调用Gmail后返回null
- Indexeddb OpenCursor在特定键值上返回null
- Ajax响应返回null
- 有没有一种方法可以判断图像src是否在javascript内部返回null
- 当JS在Chrome控制台上正常工作时,Selenium JavaScript执行器返回null
- Auth$getUser返回null,即使用户已登录(AngularFire,Firebase)
- Mongoose JS findOne总是返回null
- 为什么我的ajax调用返回null
- 当与全局标志一起使用时,Javascript Regex在后续调用中返回null
- Regex以确定该值在JS中是否有效,返回null