我正在使用一个网站,我需要使用 Selenium 运行一些 js 代码。为了让事情变得更容易,我需要运行网站脚本中声明的函数。
例如,该网站使用名为 document_handler.js
的脚本文件,其中包含以下代码:
(function ($) {
var getConversationId = function(){
return $('input[name="conversationId"]').val()
};
})(jQuery);
在 Selenium 中,如果我运行:
js_eval = driver.execute_script("return getConversationId()")
我得到:
selenium.common.exceptions.WebDriverException: Message: getConversationId is not defined
如果我运行:
js_eval = driver.execute_script("return $.getConversationId()")
我得到:
selenium.common.exceptions.WebDriverException: Message: $.getConversationId is not a function
如何加载网站 javascript 文件,以便我可以在 Selenium 中使用其功能?或者我的代码有问题?
最佳答案
如果这是您有权访问的脚本,则必须使该函数可用于外部/全局作用域。最简单的方法是将其分配给 window 对象,它应该可以工作。
(function ($) {
window.getConversationId = function(){
return $('input[name="conversationId"]').val()
};
})(jQuery);
或者这样,基本上是一样的..
var getConversationId;
(function ($) {
getConversationId = function(){
return $('input[name="conversationId"]').val()
};
})(jQuery);
关于javascript - 如何使用 Selenium 执行网站脚本中定义的 JavaScript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38315819/