the*_*heJ 10 javascript selenium nullpointerexception selenium-webdriver
我null通过Selenium运行时返回以下JavaScript代码JavascriptExecutor.但是,在Firefox开发人员控制台中运行时,相同的代码返回了一个值.
function tmp(){
var attrb = jQuery(jQuery("[name='q']")[0]).attr('type');
if(typeof attrb !== 'undefined' && attrb !== false){
return attrb;
} else {
return '';
}
}
tmp();
Run Code Online (Sandbox Code Playgroud)
以下是我的WebDriver代码,JS与上面相同:
JavascriptExecutor jsExec = (JavascriptExecutor)driver;
Object inpType =
jsExec.executeScript("function tmp(){...}tmp();");
System.out.println("Type: " + inpType);
Run Code Online (Sandbox Code Playgroud)
以上输出null而不是"文本"字符串.有任何想法吗?
Gan*_*har 17
你需要在executeScript()方法中使用return tmp()而不是tmp().找到相关的参考 driver.executeScript()为简单的javascript返回NullPointerException
问题是您在 中执行了两条语句executeScript()。tmp()的函数定义和tmp()的函数调用。
我不知道细节,但函数定义似乎返回 null。
由于executeScript 返回第一个可以返回的值,因此它返回null。如果您不定义该函数并内联编写代码,它将起作用。
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);
Run Code Online (Sandbox Code Playgroud)
这应该打印您的预期值。
编辑:此外,您发布的代码不会逃脱""around [name='q']。这会结束字符串并导致语法错误。
| 归档时间: |
|
| 查看次数: |
11673 次 |
| 最近记录: |