【问题标题】:Null Returned by javaScriptExecutorjavaScriptExecutor 返回的 Null
【发布时间】:2019-10-21 00:11:16
【问题描述】:

下面的代码在控制台上完美运行,但在 selenium javascript 执行器中作为字符串传递时不能。请帮帮我。

也尝试将完整的脚本包装到函数中,但也没有用。

var regex = new RegExp("^[0-9]+$"); 
$("#pane-side span[class]").filter(function () {
    return regex.test($(this).text()); 
});

Javascriptexecutor提供的null。

【问题讨论】:

  • 向我们展示您使用JavascriptExecutor的确切代码
  • String searchNumberString = "function aaaa(){\n" + " var regex = new RegExp(\"^[0-9]+$\"); \n" + " var abc =$(\"#pane-side span[class]\").filter(function () {\n" + " return regex.test($(this).text()); \n" + " });\n" + " return abc;\n" + " };\n" + "\n" + "return aaaa();"; JavascriptExecutor js = (JavascriptExecutor) 驱动程序; List<webelement> element = (List<webelement>) js.executeScript(searchNumberString);</webelement></webelement>

标签: javascript jquery selenium


【解决方案1】:

您必须更改 javascript,如下所示。

 var regex = new RegExp("^[0-9]+$"); 
 return regex.test(document.querySelector("#pane-side span[class]").textContent);

从 selenium (python) 运行它:

print(driver.execute_script('var regex = new RegExp("^[0-9]+$"); return regex.test(document.querySelector("#pane-side span[class]").textContent);'))

输出:

False 当跨度文本“Hello”时

True 当跨度为“123”时

截图:

编辑:

示例 HTML:

<html>
  <body>
    <div id="pane-side">
		<span class="someclass">123</span>
	</div>

   <div id="pane-side">
		<span class="someclass2">no number</span>
	</div>	
 </body>
</html>

jQuery:

【讨论】:

  • 你也可以使用 jquery 建立一个示例吗??
  • 添加了 jquery 示例,如果您有任何问题,请查看并告诉我。
  • "function aaaa(){\n" + " var regex = new RegExp(\"^[0-9]+$\"); \n" + " var abc =$(\ "#pane-side span[class]\").filter(function () {\n" + " return regex.test($(this).text()); \n" + " });\n" + " 返回 abc;\n" + " };\n" + "\n" + "返回 aaaa();";
  • 终于让代码工作了。谢谢大家的回复。
  • 你能提供你的 jquery 代码作为文本也可以就地 gif 吗?
猜你喜欢
  • 2020-12-20
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
相关资源
最近更新 更多